#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. В этом случае вам необходимо изменить способ передачи ссылки на объект. Это или просто поместите его обратно в рамку так, как это было, когда оно работало.