【发布时间】:2011-10-12 19:41:18
【问题描述】:
问题是如果我设置 Sprite 对象的 .mask 属性,当我调用 Sprite.height 时,Sprite 对象仍然返回它的全高。所以我想出了一个简单的方法来克服这个问题,那就是覆盖属性 getter。
现在.. 即使这样有效,如果我将此蒙面 Sprite 对象添加到另一个 Sprite 对象,新的 Sprite 对象将报告它的高度作为蒙版 Sprite 对象的高度,即使我已经覆盖了该属性由于蒙版,仅返回可见区域的高度。因此,Flash 似乎忽略了并非所有内容都可见但仍会自动增加新 Sprite 对象的高度这一事实,就好像蒙版 上没有蒙版一样精灵.
所以我想知道是否有解决方法,所以我可以将此蒙面对象添加到任何其他 DisplayObject 知道它将被调整为仅在蒙面中可见的内容对象。
感谢您的帮助。
编辑
这是一个代码示例..
var content:Bitmap = new Bitmap(new BitmapData(50, 100, false, 0x000000));
var container:Sprite = new Sprite();
var mask:Bitmap = new Bitmap(new BitmapData(50, 50, false, 0x000000));
container.mask = mask;
container.addChild(content);
trace(container.height) // this should return 50 instead of 100
【问题讨论】:
-
我也尝试过类似的方法。没用。也尝试过覆盖 getBounds ,但也没有用。我有兴趣看到解决方案。
-
以能够使用它的高度和宽度的方式设置遮罩是否有问题? if(sprite.mask)...
-
我需要能够将蒙版对象添加到另一个 DisplayObject 而不会将其新父级调整为内容的完整高度,而只需调整到可见的内容。我已经为其他想知道的人尝试了 .scrollRect 并且仍然返回完整高度。
-
我遇到了相反的情况(3天前!为我的公司整夜编码以参加比赛......)......滚动矩形不显示对象的实际大小......之后看到你的评论我做了一个快速测试(为了检查我当时是否在做梦)......这是奇怪的result
-
是的,我已经知道那个奇怪的延迟错误。显然 scrollRect 直到延迟 1 帧后才会改变高度,这对我来说毫无用处,因为我需要它立即更新。不过还是谢谢。
标签: flash actionscript-3 mask