最近我在Flash中遇到了很多(大约70个)#1119和#1120错误。我在网上搜索过,但没有一个解决方案解决了我的问题。我自己尝试找出错误原因,制作了一个新的Flash动画。内容:
名为“nr1”的movieClip没有实例名称。 在nr1里面有两个movieClip,“nr2”,实例名称为“ob2”,“nr3”,实例名称为“ob3”。与nr2相关联的是as3类文件“nr2.as3”。这是nr2.as3里面的代码:
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class nr2 extends MovieClip {
public function nr2() {
// constructor code
this.addEventListener(MouseEvent.CLICK,func1);
}
function func1(e:MouseEvent){
parent.ob3.x += 50;
}
}
}
这应该引用实例名称为“ob3”的对象,该对象具有与 this (nr2)相同的父对象。不过,我在第15行得到两个相同的#1119错误(parent.ob3.x + = 50;)。如何通过as3类文件引用具有相同父对象的对象?
答案 0 :(得分:1)
在nr2中设置ob3的属性并不是一个好主意。您可以在nr2中调度一个事件,并在父项中添加eventListener,这样父项就可以捕获事件并使用bo3执行某些操作。
如果你真的想在nr2中设置ob3的属性,试试这个
function func1(e:MouseEvent) {
var ob3:MovieClip = parent['ob3'] as MovieClip;
if (ob3)
{
ob3.x += 50;
}
}
答案 1 :(得分:0)
同意潘,控制另一个孩子的孩子并不是一个好主意。让引用两个孩子的父母(nr1)进行控制。所以你应该创建nr1类
package {
import flash.display.MovieClip;
import flash.events.MouseEvent;
public class nr1 extends MovieClip {
public function nr1() {
// constructor code
ob2.addEventListener(MouseEvent.CLICK,func1);
}
function func1(e:MouseEvent){
ob3.x += 50;
}
}
}