首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止DisplayObject的高度变化

防止DisplayObject的高度变化
EN

Stack Overflow用户
提问于 2011-03-08 12:21:24
回答 4查看 342关注 0票数 2

是否有办法防止DisplayObject的高度属性的自动更改?它会自动调整大小以匹配内容,尽管我的swf文件的高度为32像素。下面的代码可以证明这一点,第一帧enemy.height是32,但之后是27.5,这会扰乱我的脚本。

getRect()和getBounds()返回的内容完全相同。另外,我想知道为什么在第一帧中,它显示了正确的高度,而在第二帧中,它应该从一开始就显示27.5。

代码语言:javascript
复制
package {
    import flash.display.Sprite;
    import flash.events.Event;
    public class Main extends Sprite {
        private var enemy:Sprite;
        [Embed(source = '../lib/enemy.swf')] private var swf:Class;
        public function Main():void {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function update(e:Event):void {
            trace(enemy.height);
        }

        private function init(e:Event = null):void {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            enemy = new swf();
            addChild(enemy);
            addEventListener(Event.ENTER_FRAME, update);
        }

    }

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-08 14:00:24

"hacky“解决方案可能是向敌人添加一个形状,该形状具有您想要的最大大小,然后将其设置为不可见。我用这种方式为对象创建了命中框,并且运行得很好。

一种方法是在Flash中创建对象时添加它。只需绘制它并将其定位于您想要的形状,然后给它一个实例名称,比如"sizeHolder“。在你创造了敌人之后,你会打电话给

代码语言:javascript
复制
enemy.sizeHolder.visible = false;

在Flash中,您可以将其放置在另一个时间线上,然后使该时间线不可见并锁定它,这样在编辑实际对象时它不会妨碍您。

另一种方法是通过代码添加它。在另一个DisplayObject中绘制对象,将其设置为不可见,然后将其设置为addChild给敌人。

票数 2
EN

Stack Overflow用户

发布于 2011-03-11 08:23:11

这与实例化整个SWF有关,并且必须传递1帧才能将其同步到主swf。我要做的是导出.fla中的符号,然后在Flex中使用“嵌入符号”语法:

代码语言:javascript
复制
[Embed(source='enemy.swf#Symbol1')]
private var swf:Class;

在这种情况下,即使在第一个ENTER_FRAME中,高度也是一致的。如果它不是您想要的高度,您可以使用不可见的形状来设置边界。

票数 4
EN

Stack Overflow用户

发布于 2011-03-16 06:54:32

是敌人精灵动画序列变化的一部分,height.This是动画过程的一部分。因此,每个框架的实际高度将根据雪碧的包围框而变化。正如您很好地观察到的,这是默认行为。

方法:

calculations.(better)

  • As EyeSeeEm建议,如果我正确理解他,有一个看不见的高度精灵背景,适当地对电影剪辑中心点进行对齐,并在每个帧中对精灵进行对中,使其包含在不可见的高度精灵边界中。

您经常会发现,您会在操作脚本中遇到一些特性,而不是按照您希望的方式工作,to.Whats重要的是您要调整代码以方便解决方案。当和编码/方法允许更容易地进行进一步的更改/扩展时,它不会攻击y或效率低下。

P.S:

这将取决于情况,但就我个人而言,我宁愿高度是动态的,根据精灵动画的例子,所以任何对敌人的打击,仅仅是在敌人头顶上的射弹,都不会真正杀死敌人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5232374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档