gpt4 book ai didi

actionscript-3 - Actionscript 3 影片剪辑与主时间线的关系

转载 作者:行者123 更新时间:2023-12-02 03:45:45 25 4
gpt4 key购买 nike

这更像是一个关于编写代码的问题,而不是一个特定的问题(尽管它是一个特定的问题)。请注意,我是自学的,所以如果这是一个非常简单的问题,我还有很多不知道的地方:

我有一个影片剪辑,我已经为其创建了一个类。在我的主要时间线上,我已经在函数中使用该函数中的变量对其进行了初始化 (addChild),例如:

function myfunction():void {
var newInstance:MovieClip = new myCreatedClassForTheMovieClip();
addChild(newInstance);
....
}

在我的影片剪辑中,我在主时间线上引用了一个变量: movieClipVar = MovieClip(root).mainTimeLineVariable;我收到错误错误 #1009:无法访问空对象引用的属性或方法。

当我在函数外部但在全局级别为影片剪辑的新实例进行变量声明时,我没有收到该错误但是,当我尝试 removeChild(newInstance) 时,我收到编译器错误 1120 : access of undefined属性 newInstance (这确实有意义,因为它尚未实例化)。

所以,我不确定这两个对象是如何一起工作的(实例化的影片剪辑和主时间线),以及为什么即使使用 MovieClip(root) 将它指向那里,影片剪辑也看不到时间轴上的变量。

感谢您对此的任何帮助或指导。

干杯,

麦克风

编辑:当我声明 newInstance在全局范围内,我在函数中以相同的方式实例化它,只是省略了 var 语句并使用了 addChild(newInstance) .

这是删除影片剪辑的函数:
function postResponseCleanUp(): void {
switch (lessonStep) {
case 1 :
break;
case 2 :
break;
case 3 :
break;
case 4 :

//removeChild(screenPrint); <<previous way
removeChild(getChildByName("screenPrintName")); // cludgy way
removeChild(getChildByName("idaWkSheetName"));
if (userRole == 1) { // witness
faderOverlay.visible = false;
instructionsCallout.callout_ta.htmlText ="<font size ='6'>The <font color='#0000FF'>Reconciler</font> continues processing the notes, repeating this process <i>for each deonmination</i>.<br><br>Click <b>Next</b> to see the next steps in the process.</font>";

} else {
instructionsCallout.callout_ta.htmlText ="<font size ='6'>You continue processing the notes, repeating this process <i>for each deonmination</i>.<br><br>Click <b>Next</b> to see the next steps in the process.</font>";
}
removeChild(pointerNew);
idaWkSheet.removeEventListener(MouseEvent.ROLL_OVER,boardOver);
//screenPrint.removeEventListener(MouseEvent.ROLL_OVER,boardOver);
Mouse.show();
break;
case 5 :
break;
}

}

最佳答案

最好使用 parent关键字,因为两个项目之间的关系是父/子的关系。虽然在你的情况下 root 和 parent 应该是一样的。

movieClipVar = MovieClip(parent).mainTimeLineVariable;

另外,还有 rootparent ,直到将对象添加到舞台(在您对对象执行 addChild(object) 之后)才会填充这些变量。

在调用上面的行之前,您应该添加: trace(parent,root);并在输出窗口中看到其中一个为空。如果是这样,那么问题是在将项目添加到阶段之前正在调用代码行。

要解决该问题,您基本上希望在子影片剪辑的第一帧中执行此操作:(并且至少在第 2 帧之前不要执行任何其他操作)
if(!parent){
this.addEventListener(Event.ADDED_TO_STAGE,addedToStage);
stop();
}

function addedToStage(e:Event){
this.removeEventListener(Event.ADDED_TO_STAGE,addedToStage);
play();
}

关于actionscript-3 - Actionscript 3 影片剪辑与主时间线的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17280382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com