作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题] 想破头了...Q_Q
时间Mon Mar 10 23:17:11 2008
※ 引述《zemaitis (Peace~!)》之铭言:
: 问题1.讲义档案的第五行 root.addChild(myBubble);
: 可以得到乱数产生的泡泡,但是我自己的档案却要写stage.addChild(myBubble);
: 才能得到效果,实在想不通,是层级问题?还是?
: 问题2.讲义档案第18行 var mc:MovieClip=root.getChildByName("bubble"+i);
: 我不太理解为什麽要藉由root.getChildByName("bubble"+i)来定义mc
: getChildByName("bubble"+i)出来部是只是字串吗?
: 此外,我在自己的档案写上述的code时,编译器错误说明
: "1118: 静态类型 flash.display:DisplayObject 的值以隐含方式强制转型成可能不相关
: 的类型 flash.display:MovieClip。"
: 真的搞不懂了@@...希望板上的高手帮我解惑一下..谢谢:)
嗯...当你看到这种打死不知道error在哪里的状况
要注意一下你AS3的compiler是不是被设定在 "strict mode"
(其实这就是你compile不出来的原因)
范例档可以顺利通过compilation是因为他没有勾选strict mode compiler
而你的则有,所以你的compiler会特别"严格",许多不安全的语法都不允许
要更改的话到property inspector里面的 Publish settings
按下ActionScript version右边的Settings按钮
进去把strict mode的模式取消掉
这样你的code就可以copmile了
只是还有一些NULL的reference问题,应该就是你有reference漏洞,自己检查看看吧
另外一个补救办法
在strict mode的copmiler对type是很要求的
你出错的原因就是root是DisplayObject
需要cast成DisplayObjectContainer才可以使用addChild()这个method
DisplayObjectContainer(root).addChild()
或者
(root as DisplayObjectContainer).addChild()
getChildByName()回传的也是DisplayObject,所以也需要cast成MovieClip
var mc:MovieClip = MovieClip(getChildByName())
或者
var mc:MovieClip = getChildByName() as MovieClip
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凯特 = 蜚蠊猫 = 蟑螂猫
Gallery
http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比闪光(Adobe Flash)研讨区
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.74.93
1F:推 zemaitis:稍微有点懂了:)..谢谢相助 03/12 11:55