锁定老帖子 主题:关于AS3的stage
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-22
最后修改:2010-01-22
1.STAGE是根,是最顶层的容器!可以通过STAGE的任何子容器或显示 对象以DisplayObjectContainer.stage(需注意的是stage是小写,如果在时间轴上trace(stage.width)是正确的,如果写成trace(Stage.width则会报错))或DisplayObject.stage访问到Stage类的 唯一实例stage.就连主时间轴也是stage容器的子容器。 时间轴上写的。所以返回的是一个对象:MainTimeLine,也就是主时间轴了。同 志们可以试试在主时间轴上写:trace(this.stage);当然输出的是Stage对象了 。也可以省略不写this,直接写:trace(stage);输出的还是Stage对象。为了更清 楚,在主时间轴上写上代码:trace(stage.getChildAt(0));看看输出的是什么 呢?如果是MainTimeLine的话,就更能说明问题了,主时间轴是stage容器的第 一个子容器,在索引位置0上。 2.stage.width 与stage.stageWidth 我记得width相当于sprite的width,是stage上所有child构成的范围的宽( 没东西width就是0),stageWidth就是舞台的宽 显示一下这两个的值呢。 stage.addEventListener(MouseEvent.CLICK,update); function update(e) { txt.text = String(stage.stageWidth); txt1.text = String(stage.width); }
自己看看吧,改变一下舞台的大小,场景上的东西,还有环境,缩放, 自己试出来的结果永远比别人讲的来的清晰
3.这两天看AS3 cookbook和AS3的帮助文档,里面很多代码执行后都会出现“TypeError: Error #1009: 无法访问空对象引用的属性或方法。”这个错误。几经周折,才知道解决办法:使用addEventListener( Event.ADDED_TO_STAGE, enterDLHandle ),把要用的stage代码放到enterDLHandle里面,就没问题了。不知道有没有其他解决方法,知道的说声啊~ 在经典论坛上提问这个问题,终于有人做出全面回答了,在此感谢zjs35 首先要明白stage是什么意思,stage是显示对象的一个引用舞台的属性,如果显示对象不在显示列表中,即没有用addChild()添加,stage等于null,你的问题就在这里。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-10-20
我最近正在进行Flex利用Flash的测试。现在我用的是Flex Builder去加载一个现成的Flash文档。这个Flash是一个简单的射击文档,直接执行是没问题的。但是由Flex Builder加载后就出现对fscommand,stage.stageWidth识别方面的问题,请问有什么好办法没有。谢谢
|
|
返回顶楼 | |
发表时间:2010-10-20
错误代码是:SecurityError: Error #2070: Security sandbox violation: caller file:///d:/flashdoc/射击.swf cannot access Stage owned by app:/g.swf.
at flash.display::Stage/get stageWidth() at _fla::MainTimeline/startPos() at _fla::MainTimeline/init() at _fla::MainTimeline/frame2() |
|
返回顶楼 | |
发表时间:2010-10-20
找到原因了,需要把要加载的SWF文档放到Flex Project项目下,或者指定Source路径也可以。
|
|
返回顶楼 | |
浏览 6250 次