2009-11-04 89 views
1

我想动态补间我的SWF中的一些动画片段,但它们的动态创建名称存在问题。下面是代码再次铸造问题

function slidePhoto(e:TimerEvent):void { 
    i = "i3"; 
    movieClip = i as Object; 
    Tweener.addTween(movieClip,{x:0, y:0, transition:"easeInOutQuint", time:1, onComplete:waitMe, onCompleteParams:[4000, slideOutPhoto]}); 
} 

即使我宣布

var i:String = "i"; 
var movieClip:Object; 

然后

movieClip = i+3; 

,这并不工作,但如果我跟踪的动画片段,我得到 “I3” ???这是铸造问题还是我在某个地方非常非常错误?

+0

你究竟在做什么?你是否意识到将我转换成对象并不会将它变成MovieClip? – 2009-11-04 21:48:14

+0

我需要以某种方式生成序列(i1,i2,i3,i4 .....),然后将此序列传递给Tweener,但它的目标属性是Object type ...因此,我只能传递mc名称或另一个Object ... – Zlatiborac 2009-11-04 22:23:08

回答

2

试试这个:

function slidePhoto(e:TimerEvent):void { 
    i = "i3"; 
    movieClip = getChildByName(i); 
    Tweener.addTween(movieClip,{x:0, y:0, transition:"easeInOutQuint", time:1, onComplete:waitMe, onCompleteParams:[4000, slideOutPhoto]}); 
} 

找到getChildByName在此参考页:

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObjectContainer.html

这是不是一个铸钢问题,你只需要根据包含名称来定位的DisplayObject在我。

+0

当我尝试这个,然后跟踪movieClip我收到空作为结果 – Zlatiborac 2009-11-04 22:21:29

+0

是正如Jotham和Lior说,此刻你试图将一个字符串转换为一个对象,并以某种方式使用它来引用一个永远不会去的MovieClip上班。 Jotham的解决方案将起作用。我怀疑你没有命名你的MovieClip。当您动态创建MovieClip时,您需要设置name属性。所以myMC:MovieClip = new MovieClip(); myMC.name = i3。它也必须添加到显示列表中。 – Allan 2009-11-04 23:12:22

+0

好吧,刚刚导入Tweener后,我将这些对象定义为影片剪辑 import caurina.transitions.Tweener; stop(); var i1:slika1 = new slika1(); i1.name =“i1”; var i2:slika2 = new slika2(); i2.name =“i2”; 正如你所看到的我已经给他们的名字,但再次这不起作用。 当我跟踪movieClip和typeof我得到i3和字符串...字符串是对象类型和Tweener手册状态,我需要对象作为目标...但这不起作用... – Zlatiborac 2009-11-04 23:48:27