flash,as3,如何在类文件中访问被嵌套元件的坐标位置,谢谢
程序如下:publicfunctionMain(){moo=newArray();for(varj:uint=0;j<3;j++){varmoon:Moon=newMoo...
程序如下:
public function Main() {
moo=new Array();
for (var j:uint =0; j<3; j++) {
var moon:Moon=new Moon();
moon.x=100*j+50;
moon.y=200;
moon.gotoAndStop(j+1);
moo.push(moon);
addChild(moon);
}
}
我这样写:if(moo[0].dd0.localToGlobal(pp).y==200) { }
程序报错:ReferenceError: Error #1069: 在 Moon 上找不到属性 dd0,且没有默认值。
dd0是moo[0]内部嵌套的一个影片剪辑,名称为dd0。moo[0]其实是由moo0与dd0两个mc组成。
如果直接在舞台上添加,用if(moo0.dd0.localToGlobal(pp).y==200) { }完全正确。
我的类文件该如何修改?
例如:1 库中有圆形影片剪辑moon,导出为类Moon,还有个小方块影片剪辑dd。在moon里面包含了元件dd;
2 把元件moo加载到舞台: var moo:Moon=new Moon(); addChild(moo);
3 如何才能访问moo内的dd,已经说得够明白了,
4 我想证明dd的全局坐标y是在200上:var pp:Point = new Point(); if(moo.dd.localToGlobal(pp).y==200) { }
程序报错,我编程思路有误
在研究中,有做过的教下 展开
public function Main() {
moo=new Array();
for (var j:uint =0; j<3; j++) {
var moon:Moon=new Moon();
moon.x=100*j+50;
moon.y=200;
moon.gotoAndStop(j+1);
moo.push(moon);
addChild(moon);
}
}
我这样写:if(moo[0].dd0.localToGlobal(pp).y==200) { }
程序报错:ReferenceError: Error #1069: 在 Moon 上找不到属性 dd0,且没有默认值。
dd0是moo[0]内部嵌套的一个影片剪辑,名称为dd0。moo[0]其实是由moo0与dd0两个mc组成。
如果直接在舞台上添加,用if(moo0.dd0.localToGlobal(pp).y==200) { }完全正确。
我的类文件该如何修改?
例如:1 库中有圆形影片剪辑moon,导出为类Moon,还有个小方块影片剪辑dd。在moon里面包含了元件dd;
2 把元件moo加载到舞台: var moo:Moon=new Moon(); addChild(moo);
3 如何才能访问moo内的dd,已经说得够明白了,
4 我想证明dd的全局坐标y是在200上:var pp:Point = new Point(); if(moo.dd.localToGlobal(pp).y==200) { }
程序报错,我编程思路有误
在研究中,有做过的教下 展开
展开全部
我似乎看懂你说的意思了,其实dd0,对于moo这个数组而言,是一个成员,而不是属性,对吧,所以,moo[0][0]或moo[0][1]其实才是你认为的dd0,再试试
用trace(moo[0][1].target);看看它运行时输出出来的内容对不对
用trace(moo[0][1].target);看看它运行时输出出来的内容对不对
追问
ReferenceError: Error #1069: 在 Moon 上找不到属性 0,且没有默认值。
不行
追答
我按照你问题补充里说的,写了fla,也trace了一些东西,没有报错啊,你看看这个是我写在舞台上的代码,你那边有没有问题
var moo:Moon=new Moon();
this.addChild(moo);
moo.y=200;
trace(moo.dd);//输出内容:[object MovieClip]
var pp:Point = new Point();
trace(moo.dd.y);//输出内容:0
trace(moo.dd.localToGlobal(pp).y);//输出内容:200
if(moo.dd.localToGlobal(pp).y==200) { trace("hello"); } //正常输出“hello”
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不知道你的思路是不是认为dd加到数组里面也成dd0了是吧,这是不对的,虽然new 了三次moon,
但是它的名称还是没有变的,而且就算是三次moon,改了名字,里面的dd还是一样,
你前面说的是dd0,后面补充又是dd,不知道到底是什么,
按你后面补充说的,里面是dd而不是dd0 ,下面代码测试一切正常
var moo:Array=new Array();
for (var j:uint =0; j<3; j++) {
var moon:Moon=new Moon();
moon.x=100*j+50;
moon.y=200;
moon.gotoAndStop(j+1);
moo.push(moon);
addChild(moon);
}
var pp:Point = new Point();
if(moo[0].dd.localToGlobal(pp).y==200) {trace("dddd") }
但是它的名称还是没有变的,而且就算是三次moon,改了名字,里面的dd还是一样,
你前面说的是dd0,后面补充又是dd,不知道到底是什么,
按你后面补充说的,里面是dd而不是dd0 ,下面代码测试一切正常
var moo:Array=new Array();
for (var j:uint =0; j<3; j++) {
var moon:Moon=new Moon();
moon.x=100*j+50;
moon.y=200;
moon.gotoAndStop(j+1);
moo.push(moon);
addChild(moon);
}
var pp:Point = new Point();
if(moo[0].dd.localToGlobal(pp).y==200) {trace("dddd") }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你再另外建立一个元件,导出为Moon 然后创建Moon类, 给他加个public var dd0:MovieClip就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我这样写:if(moo[0].dd0.localToGlobal(pp).y==200) { }
--------------------------------------------------------------------------
我这样写:if(moo[0]["dd0"].localToGlobal(pp).y==200) { }
--------------------------------------------------------------------------
我这样写:if(moo[0]["dd0"].localToGlobal(pp).y==200) { }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询