Ошибка # 1034 с классом документа

#flash #actionscript-3

#flash #actionscript-3

Вопрос:

Привет, я получил небольшой класс, и все работает нормально. Затем я добавляю его в класс документа и затягиваюсь, возникает ошибка 1034.

Ошибка # 1034: ошибка ввода: не удается преобразовать flash.display::MovieClip@2be9dba1 в fl.текст.TCMText. при flash.display::Sprite/constructChildren()
при flash.display::Sprite()
при flash.display::MovieClip()
при Wyjazd()
при Wyjazd / wyskok()

Мой код класса.

 package 
{
    import fl.transitions.Tween;
    import fl.motion.easing.*;
    import flash.filters.*;
    import flash.events.MouseEvent;
    import flash.display.Stage;
    import flash.display.MovieClip;

    public class Wyjazd extends MovieClip
    {

        public function Wyjazd(ar:Array=null)
        {
            if (ar!=null)
            {
                init(ar);
            }
        }

        public function init(ar:Array):void
        {
            var time:Number = 0.2;
            var offset:Number = 0;
            var posX:Array = new Array(12);
            for (var i:Number = 0; i < ar.length; i  )
            {

                var tween:Tween = new Tween(ar[i],"x",Sine.easeOut,ar[i].x,266.65   offset,time,true);

                ar[i].addEventListener(MouseEvent.CLICK,onClick);
                posX[i]=ar[i].x;
                time  =  0.02;
                offset  =  15.25;
            }


            function onClick(e:MouseEvent)
            {
                time = 0.2;
                for (var i:Number = 0; i < ar.length; i  )
                {
                    var tween:Tween = new Tween(ar[i],"x",Sine.easeOut,ar[i].x,posX[i],time,true);      
                    time  =  0.02;
                }
            }

        }

    }
}
  

И код фрейма:

 import flash.events.MouseEvent;
import fl.transitions.Tween;
import flash.display.MovieClip;
stop();
ofertaBTN.addEventListener(MouseEvent.CLICK, wyskok);
function wyskok(e:MouseEvent)
{
     var vektor:Array =new Array (I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII);
     var menu:Wyjazd = new Wyjazd(vektor);
}
  

Ответ №1:

Я не могу сказать наверняка, не глядя на ваш.FLA, но…

Исходя из ошибки, которую вы получаете, вы пытаетесь преобразовать текст (ваш векторный массив (I, II, III, …) в видеоролик, и flash не позволит вам этого сделать. Вы не можете переключаться между не отображаемыми объектами.

Я собираюсь предположить, что вы пытаетесь настроить таргетинг на экземпляры, находящиеся на этапе, имена экземпляров которых I, II, III, IV, V, …

Вместо построения массива во фрейме попробуйте создать его в классе document. Я построил здесь простой пример, который работает:

 package  {

    import flash.display.MovieClip;
    import flash.events.Event;
    import fl.transitions.Tween;
    import fl.motion.easing.*;


    public class arrayInst extends MovieClip {

        public var allInstanceReferences:Array;

        public function arrayInst() {
            // constructor code

            allInstanceReferences = new Array(I, II, III, IV, V);
            this.addEventListener(Event.ENTER_FRAME, moveAllReferences);
        }

        private function moveAllReferences(e:Event):void{
            for (var i:uint = 0; i < allInstanceReferences.length; i  ){
                var tweenThis:Tween = new Tween(allInstanceReferences[i], "x", Sine.easeOut, allInstanceReferences[i].x, 250, 2, true);
            }
        }
    }

}
  

Мой массив allInstanceReference содержал ссылки на текстовое поле TLF [I] и видеоролик [II — V], и все объекты перемещались без проблем.

Комментарии:

1. вектор: массив = [I,II, III …] // это должны быть объекты массива.

2. В этом случае вам необходимо изменить способ передачи ссылки на объект. Это или просто поместите его обратно в рамку так, как это было, когда оно работало.