博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
stage和root
阅读量:4106 次
发布时间:2019-05-25

本文共 1866 字,大约阅读时间需要 6 分钟。

当创建Flash文档文件时,系统会自动创建舞台和主时间轴这两个对象,舞台和主时间轴都属于容器.那么是舞台包含主时间轴呢? 还是主时间轴包含舞台呢?

在ActionScript 3.0中,舞台做为顶级容器,所有的显示对象都直接或间接的包含在舞台中.所以主时间轴也包含在其中.

默认情况下,主时间轴位于舞台的左上方,如果不用程序去改变主时间轴的位置,主时间轴将永远位于舞台的左上方.

变量stage与舞台

舞台有自己的名字:stage. 这个名字实际上是变量名,即stage是控制舞台的变量. 通过stage就可以动态的控制舞台. 由于stage是系统自定义的,所以就不需要用户再去定义,因此可以直接使用变量stage.

// 输出stage=[object Stage] ,object代表对象,Stage表示类. 所以stage是Stage类的对象.

trace("stage="+stage);

类可以看出是创建对象的模板,既舞台stage是由Stage类创建的. 因此以后就可以把舞台成为舞台对象了.实际上, 任何变量都与类有关.当用trace函数输出变量时,会自动调用toString()方法. 对于不同的类,它的toString()方法返回的信息就有所不同. 像Stage类的toString()方法返回的是"[object 类名]"的信息.

舞台是保存数据的容器,并且舞台容器中又有很多小的容器,所以舞台是容器的容器.通过这种容器的嵌套,就可以保存非常复杂的数据. 像这种复杂数据的东西一般被称为负责对象.要访问对象中的变量,需要使用点语法,形式如下:

    对象名.变量名

例如,对于舞台这个复杂对象来说,它的对象名就是stage,可以用下面的代码来定义和访问舞台中的变量:

//定义舞台的帧频

var frameRate = 12;

//定义舞台的宽和高

var stageWidth = 550;

var stageHeight = 400;

//访问stageWidth变量

trace("舞台的宽度:" + stage.stageWidth);

对象中的变量在面向对象编程中称为属性, 属性由属性名和属性值组成.   属性名其实就是变量名,属性值就是变量值. 访问对象的属性的形式为:  

    对象名.属性名

应当说明的是,舞台的帧频,宽高是在[属性]面板中设置的,而与前面用var定义的孤立(root)变量的设置无关.而通过点语法虽然可以读取舞台容器中的非孤立变量值,但是由于Flash为这些变量规定了只读属性,所以暂时尚无法通过类似"stage.stageWidth = 800"这样的语句为舞台中的变量重新赋值.

变量root与主时间轴

主时间轴与舞台类似,也是容器的容器.即变量root保存的也是复杂数据,主时间轴也是用类创建的.管理主时间轴的类叫MainTimeline类.

//输出root = [object MainTimeline]

trace("root = "+root);

前面写的代码都是在帧的[动作]面板中, 所以定义的变量都应属于主时间轴.可以这样认为,写在帧中的变量都在MainTimeline类中,而root是由MainTimeline类创建的对象,这些变量都成了root的属性,因此可以用"root.属性"的形式来访问这些变量. 例如:

//定义变量

var speed = 10;

//直接访问变量

trace("speed="+speed);

//把变量当成属性访问

trace("speed="+root.speed);

另外,MainTimeline类是动态类, 由动态类创建的root可以动态地添加属性:

//向root动态添加属性propl

root.prop = 5;

//尝试直接访问propl

trace(prop);

//通过点语法访问

trace(root.prop);

从上面测试的两段程序可以看出,在主时间轴上用var定义的变量会呗添加到MainTimeline类中,成为主时间轴root的属性, 而通过root动态添加的属性并没有添加到MainTimeline类中.

这里特别要注意,Stage类不是动态类,不能向舞台stage动态的添加属性,下面的代码是错误的:

stage.prop = 5;

另外,由类创建对象的过程称为实例化,所以由类创建的对象也称为实例.因此, 可以称舞台stage是Stage类的实例,主时间轴root是MainTimeline类的实例.

转载地址:http://lwnsi.baihongyu.com/

你可能感兴趣的文章
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(五):OpenFeign请求结果处理及重试控制
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
OpenFeign学习(七):Spring Cloud OpenFeign的使用
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>
XML生成(三):JDOM生成
查看>>
Ubuntu Could not open lock file /var/lib/dpkg/lock - open (13:Permission denied)
查看>>
collect2: ld returned 1 exit status
查看>>
C#入门
查看>>
查找最大值最小值
查看>>
杨辉三角
查看>>
冒泡排序法
查看>>
C#中ColorDialog需点两次确定才会退出的问题
查看>>