1

我正在处理电影剪辑的嵌套。

我正在尝试访问舞台上主要影片剪辑的第 2 帧中的另一个影片剪辑。

=> test2 影片剪辑出现在测试影片剪辑的第 2 帧上。

由于访问 test2 变量,我收到此错误。

TypeError:错误 #1009:无法访问空对象引用的属性或方法。在 Untitled_fla::MainTimeline/Access() 在 Untitled_fla::MainTimeline/Untitled_fla::frame1()

在主影片剪辑的第 2 帧上访问 test2 影片剪辑的任何替代方法?

我的代码是:

var test1:MovieClip;
var test2:MovieClip;
test.stop();

function Start(){
    //test.addChild(test1);
    //Test1 = new test1();
    //Test2 = new test2();
    trace(test.numChildren);
    test1 = MovieClip(test.getChildByName("test1"));
    test.gotoAndStop(2);
    test2 = MovieClip(test.getChildByName("test2"));

}
function Access(color:String){
    var r:RegExp=new RegExp(/#/);
    var uintColor:uint = uint(String(color).replace(r,"0x"));
    var c: ColorTransform = new ColorTransform();
    c.alphaMultiplier = 0.9;
    c.color = uintColor;
    test.gotoAndPlay(2);
    test2.transform.colorTransform = c;
}
Start();
Access("#666666");
4

2 回答 2

0

在 Flash 中,虽然他的时间线 Flash 播放器仅在帧结束时(第一帧除外)创建嵌套子级,也就是说,如果您test2在第二帧中命名了子级clip并导航到该帧,则您必须等待 1 帧之前将创建第二帧中的孩子。尝试以下解决方案:

function Start(){
    trace(test.numChildren);
    test1 = MovieClip(test.getChildByName("test1"));
    test.gotoAndStop(2);
    addEventListener(Event.ENTER_FRAME, function(event:Event):void
    {
        EventDispatcher(event.target).removeEventListener(event.type, arguments.callee);
        test2 = MovieClip(test.getChildByName("test2"));
    });
}   
于 2013-01-30T10:17:10.243 回答
0

尝试更改您的访问功能。如果您正在播放测试影片剪辑,我认为 test2 将不可用。

function Access(color:String){
    var r:RegExp=new RegExp(/#/);
    var uintColor:uint = uint(String(color).replace(r,"0x"));
    var c: ColorTransform = new ColorTransform();
    c.alphaMultiplier = 0.9;
    c.color = uintColor;
    test.gotoAndStop(2);
    test2.transform.colorTransform = c;
}
于 2013-01-30T10:29:33.327 回答