我有一个附加了attachMovieClip的影片剪辑,它有一个名为test()的函数
///
function test()
{
trace('!');
}
附加影片后,我试图调用该功能,但我根本无法。有一个简单的解决方案吗?我已经读过一些关于你的事情,你不能在剪辑完全加载之前调用这个函数......有一个简单的解决方案吗?
答案 0 :(得分:1)
确保在MovieClip时间轴的第一帧定义了“test”功能。然后使用MovieClip.onLoad处理程序捕获MovieClip准备接收函数调用的时间。之后,您应该可以在剪辑上调用“test”。
祝你好运!答案 1 :(得分:1)
您可以在主时间轴中定义动画片段外的功能。然后,附加它(通过attachMovie),您可以通过initObject(第4个参数)传递它:
function test(p) {
trace("called with "+p);
}
this.attachMovie("lib_clip","clip_mc",3,{func:test, mp:"my parameter"});
clip_mc._x = 100;
clip_mc._y = 100;
clip_mc.onRelease = function() {
this.func(this.mp);
};
Vyger
答案 2 :(得分:0)
我使用AS2已经有一段时间了,因为AS3摇滚,但我相信您需要为附加的影片剪辑提供实例ID。而且你还需要等到电影准备就绪。
//MovieClip with function hello() in it.
hello():Void
{
trace('Hello world!');
}
//Root timeline of main movie.
container.attachMovieClip("nameInLibraryToAttach", "instanceID", depth);
//The following will not trace because it happens to soon.
container.instanceID.hello();
//The following works
var runOnceNumber:Number = 0;
var interval:Number = setInterval(someFunction, 1000);
someFunction():Void
{
container.instanceID.hello();
runOnceNumber++;
clearInterval(interval);
}
你需要做的是设置带有嵌入式功能的MovieClip,以便在准备好时广播一个事件,并从主要事件中监听它,或者像setInterval那样只需要一个滴答。我用setInterval测试它,它首先工作。再次,您需要等到它“INITIALIZED”,这意味着第1帧上的所有代码都已加载并可用。考虑一下ActionScript 3,因为它的事件驱动流程非常容易。