播放列表 --- SWF解析学习 笔记(2)


  播放一个 swf 文件的一帧,需要以下三个步骤:

 

1 定义需要使用的 DefineShape, DefineSprite 这种定义型 tag;

这些 tag 以及 character id 会在解析时存储到字典中。

2: 从字典里将定义型 tag character id 复制并放到播放列表 (display list) 中,这就是下一帧要播放的 charater id.

 

3: 当这些完成后,使用 ShowFrame tag 将内容渲染到屏幕上。

 

一个 Depth 值会传给播放列表上的各个 character, Depth 决定了播放列表的存储顺序。等级比较低的会放在等级高的下面。 Depth 1 character 会在栈的最底层播放。一个 character 可以在播放列表出现多次,但是必须是不同的 depth. 值。

SW1,2 中, 播放列表是一个平级的一系列对象,而在 sw3 后的版本中,播放列表是分级的列表,一个列表中可能还会有子列表。

 

播放列表相关的控制型 tag:

 

PlaceObject:   添加一个 character 到播放列表

PlaceObject2 & PlaceObject3   添加一个 character 到播放列表,或者在制定的 depth 修改 charater.

RemoveObject: 移除播放列表中指定的 character.

RemoveObject2 移除指定 depth 上的 character

ShowFrame 渲染播放列表上的内容。

 

 

裁剪层

 

播放器支持一种特殊的对象:裁剪层。 它并不会播放而是对上面的对象进行裁剪或者 mask 处理。

 

 

播放列表的使用流程:

 

1 定义定义型 ta g

2 通过 PlaceObject2 character 放入播放列表。 PlaceObject2 带有下面的几点属性值:

Depth

transformation   matrix   决定了位置坐标,缩放,选装角度等图形属性。一个相同的 character 可以以不同 matrix 放在不同的 depths 多次

 

optional   color   transform 指定包含透明度以及颜色转换等色彩效果

 

optional name string,  确认 SetTarget 行为

 

ClipDepth value   指定 mask 操作的最顶层 depth

 

ratio value

 

3.ShowFrame :

 

4: PlaceObject2   修改播放列表上的每个 character, 为每个 character 赋给了一个新的 ctm.

5: ShowFrame : 在他们新的位置显示

 

重复上面的 4,5 操作。

6 RemoveObject2 移除播放列表上的每一个 character.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值