Flash as3.0 关于 addChild / addChildAt的问题
在Flash中新建一个as3.0的Flash文件,当使用AS在两个场景分别绘制了一幅图行第一个场景第一帧代码:varloginMc:Shape=newShape();lo...
在Flash中新建一个as3.0的Flash文件,当使用AS在两个场景分别绘制了一幅图行
第一个场景第一帧代码:
var loginMc:Shape=new Shape();
loginMc.graphics.beginFill(0x3f4f5f, 1);
loginMc.graphics.drawRect(0, 0, 100, 200);
addChild(loginMc);
第二个场景第一帧代码:
var loginMc1:Shape=new Shape();
loginMc1.graphics.beginFill(0x3f4f5f, 1);
loginMc1.graphics.drawRect(0, 0, 100, 200);
loginMc1.x=200;
addChild(loginMc1);
stop();
当测试影片时,两个图形同时出现在了舞台上,而不是分别显示在相应的场景。
希望有人能帮忙解答一下,该如何处理。
一楼,不知道你试过没有,即便是在第二个场景里先stop,同样是两个矩形同时出现在舞台上,这个问题的关键是,用addChild时,是不是已经跨过了场景的限制,而对每个场景都会起到作用,每当脚本执行addChild时,当播放到另一个场景时,使用addChild所添加的显示对象会在下一个场景的舞台上显示出来。希望得到一些关于addChild的详细介绍,在搜索到一些关于网上介绍,addChild的使用是DisplayObjectContainer.addChild(DisplayObject);DisplayObjectContainer是显示对象的实例名称,即将DisplayObject加入到DisplayObjectContainer的现实容器中,当在场景1中建立一个空白的影片剪辑,命名为blankMC,将addChild(loginMc);改写为blankMC.addChild(loginMc);时,测试影片,当播放到第二个场景,就不会出现在第一个场景中所添加的矩形了。 展开
第一个场景第一帧代码:
var loginMc:Shape=new Shape();
loginMc.graphics.beginFill(0x3f4f5f, 1);
loginMc.graphics.drawRect(0, 0, 100, 200);
addChild(loginMc);
第二个场景第一帧代码:
var loginMc1:Shape=new Shape();
loginMc1.graphics.beginFill(0x3f4f5f, 1);
loginMc1.graphics.drawRect(0, 0, 100, 200);
loginMc1.x=200;
addChild(loginMc1);
stop();
当测试影片时,两个图形同时出现在了舞台上,而不是分别显示在相应的场景。
希望有人能帮忙解答一下,该如何处理。
一楼,不知道你试过没有,即便是在第二个场景里先stop,同样是两个矩形同时出现在舞台上,这个问题的关键是,用addChild时,是不是已经跨过了场景的限制,而对每个场景都会起到作用,每当脚本执行addChild时,当播放到另一个场景时,使用addChild所添加的显示对象会在下一个场景的舞台上显示出来。希望得到一些关于addChild的详细介绍,在搜索到一些关于网上介绍,addChild的使用是DisplayObjectContainer.addChild(DisplayObject);DisplayObjectContainer是显示对象的实例名称,即将DisplayObject加入到DisplayObjectContainer的现实容器中,当在场景1中建立一个空白的影片剪辑,命名为blankMC,将addChild(loginMc);改写为blankMC.addChild(loginMc);时,测试影片,当播放到第二个场景,就不会出现在第一个场景中所添加的矩形了。 展开
2个回答
展开全部
1.AS3中用addChild()和addChildAt()方法添加的的显示对象是添加到容器的显示列表中,不是添加到时间轴上,在创作环境中(从库到舞台等)拖进去才是添加到时间轴上,也就是说跟时间轴存在与否是没有关系的,只要调用那么它就添加到显示列表中,联想一下Sprite类,它是没有时间轴的显示容器,在这里影片中的时间轴的作用就是控制添加时间的先后性而已,只要添加了除非删除或添加到别的容器中,否则会一直存在,另,场景只是时间轴的划分,实际也是时间轴,因此场景的作用其实不大,倒是动画人员用的比较多,方便管理
2.如何处理,这要看你想怎么做,如果你想在一个场景中只显示部分元件,那么你可以用removeChild()或removeChildAt()方法删除不想显示的对象,设置visible,alpha也可以,比如在第二个场景中动态判断存在则删除:
if(loginMc){
removeChild(loginMc);
}
3.关于addChild()的介绍,这个最好看官方的语言参考,不管用什么创作工具按F1都是经常需要做的,除非你过目不忘,以下是addChild()相关的官方中文语言参考:
http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/flash/display/DisplayObjectContainer.html#addChild%28%29
http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7dff.html
http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e40.html
2.如何处理,这要看你想怎么做,如果你想在一个场景中只显示部分元件,那么你可以用removeChild()或removeChildAt()方法删除不想显示的对象,设置visible,alpha也可以,比如在第二个场景中动态判断存在则删除:
if(loginMc){
removeChild(loginMc);
}
3.关于addChild()的介绍,这个最好看官方的语言参考,不管用什么创作工具按F1都是经常需要做的,除非你过目不忘,以下是addChild()相关的官方中文语言参考:
http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/flash/display/DisplayObjectContainer.html#addChild%28%29
http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7dff.html
http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e40.html
展开全部
你是先加载后stop(),当然会同时出现,在第二个场景里先stop(),再加载图形
确实是这样哦!说实话以前用过场景出错!就再也没有用过了!as3.0不建议用场景的!如果你是想通过某个按钮进行场景切换的话!我不用场景的方法是这样的!
var pd:Boolean=true;
jzhs();
function jzhs() {
var loginMc:Shape=new Shape();
loginMc.graphics.beginFill(0x3f4f5f, 1);
loginMc.graphics.drawRect(100, 100, 100, 200);
addChildAt(loginMc,0);
}
stage.addEventListener(MouseEvent.CLICK,hs);
function hs(event) {
if (pd) {
pd=false;
removeChildAt(0);
var loginMc:Shape=new Shape();
loginMc.graphics.beginFill(0x3f4f5f, 1);
loginMc.graphics.drawRect(50, 50, 200, 200);
addChildAt(loginMc,0);
} else {
pd=true;
removeChildAt(0);
jzhs();
}
}
鼠标单击两图形切换!相信你有收获!
确实是这样哦!说实话以前用过场景出错!就再也没有用过了!as3.0不建议用场景的!如果你是想通过某个按钮进行场景切换的话!我不用场景的方法是这样的!
var pd:Boolean=true;
jzhs();
function jzhs() {
var loginMc:Shape=new Shape();
loginMc.graphics.beginFill(0x3f4f5f, 1);
loginMc.graphics.drawRect(100, 100, 100, 200);
addChildAt(loginMc,0);
}
stage.addEventListener(MouseEvent.CLICK,hs);
function hs(event) {
if (pd) {
pd=false;
removeChildAt(0);
var loginMc:Shape=new Shape();
loginMc.graphics.beginFill(0x3f4f5f, 1);
loginMc.graphics.drawRect(50, 50, 200, 200);
addChildAt(loginMc,0);
} else {
pd=true;
removeChildAt(0);
jzhs();
}
}
鼠标单击两图形切换!相信你有收获!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询