as3 Sprite 大小的疑问

文盲老顾
WEB应用领新星创作者
博客专家认证
2010-11-19 01:05:10


var sp1:Sprite = new Sprite();
var sp2:Sprite = new Sprite();
var sp3:Sprite = new Sprite();

var mask1:Shape = new Shape();
var mask2:Shape = new Shape();
var mask3:Shape = new Shape();

sp1.mask = mask1;
sp2.mask = mask2;
sp3.mask = mask3;

stage.addChild(sp1);
sp1.addChild(sp2);
sp2.addChild(sp3);



我在实际过程中遇到这样一个问题

当我设置 sp1 的 mask 大小为 300 * 300,sp2 的 mask 大小为 100 * 100,sp3 内填充一个 400 * 400 的图象,这个时候,sp1 和 sp2 的大小都变成了 400 * 400,mask 设置的大小对 Sprite 的实际大小无实际意义,只能设置显示大小

我现在是想如何在取 sp1.width 的时候,得到的是 sp2.mask 的大小
...全文
230 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2010-11-23
  • 打赏
  • 举报
回复
Event.ENTER_FRAME 勉强解决这个问题。。。谢楼上
qiuhuanjian_new 2010-11-19
  • 打赏
  • 举报
回复
不用setInterval,不是可以用onEnterFrame么?
文盲老顾 2010-11-19
  • 打赏
  • 举报
回复
发现一个问题,如1楼我写的代码,当我设置每秒播放120侦时,sp 对象的实际大小更新的就很快,而设置为1的时候,更新的就很慢。。。。

怎么可以用不是 setInterval 的方式捕捉更新事件。。。。
文盲老顾 2010-11-19
  • 打赏
  • 举报
回复
import classes.*;

var a:Sprite = new Sprite();
var div:Shape = new Shape();
div.graphics.beginFill(0xFFCC00);
div.graphics.drawRect(0,0,550,400);
div.graphics.endFill();
a.addChild(div);
stage.addChild(a);
a.scrollRect = new Rectangle(0,0,300,300);
trace(a.width)

function aa(){
trace(a.width)
}

setInterval(aa,10)


我在设置了对象 a 的 scrollRect 属性后,立刻trace(a.width), 没有变化,在延时后的结果中,却是切割后的结果,怎么规避这个问题啊,或者监听哪个事件可以捕捉 scrollRect 生效的动作

2,275

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 Flash流媒体开发
社区管理员
  • Flash流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧