代码之家  ›  专栏  ›  技术社区  ›  Run CMD

AS3 CPU性能+100个MovieClip拷贝

  •  1
  • Run CMD  · 技术社区  · 14 年前

    随着拷贝数的增加,或者movieclip的复杂性的增加,CPU的使用率也随之增加。从90个拷贝开始,当我把鼠标在swf电影上移动一圈,播放就会停止(挂起)。当鼠标移动停止时,swf在正确的位置再次继续,就好像计算继续,但更新显示却没有。

    显而易见的问题是怎样才能优化CPU性能?

    我用的是AS3,flashplayer9。 Movieclip是一个简单的矩形,沿一个轴移动。

    var myLinkage:Class = Class(getDefinitionByName(getQualifiedClassName(McToRepeat)));
    var newMC:MovieClip = new myLinkage();
    containerMC.addChild( newMC );
    
    1 回复  |  直到 14 年前
        1
  •  8
  •   tedw4rd    14 年前

    swf可能会挂起,因为当你移动鼠标时,你会触发 MOUSE_MOVE 在屏幕上的每一部电影里都有类似的事件。

    通常,您可以通过在 MovieClip 继承树并从中构建自己的图形类。 电影剪辑 s有很多很酷的铃铛和口哨,比如时间线、图层和内置鼠标操作。不幸的是,所有这些都会占用内存和CPU时间,而且通常情况下,您不需要所有这些功能。幸运的是,你可以挑选你需要的功能,并摆脱了多余的脂肪,这是很多 电影剪辑 继承树的布局使得这些特性中的每一个都非常简洁地封装在一个父类中。

    例如,在应用程序中,您说 电影剪辑 s包含一个简单的形状跟随一个简单的运动路径。我还假设它们不会与鼠标或键盘交互。我们可以上去 电影剪辑 TweenLite 格林斯托克)。就在那里,你可以编写你自己的类,子类 Sprite (代替 ),并可能获得一个像样的增加帧率。

    如果你想进一步优化,你可以更进一步。你也可能不需要图层,因为你使用的是一个简单的形状。因此,你可以比 DisplayObjectContainer . 既然你不需要互动, InteractiveObject DisplayObject . 自 显示对象 工作起来可能很困难,你可能想从树上下来一步,或者 Shape Bitmap ,取决于你的形状有多复杂。

    , ,或 ,并在那里添加该功能。

    要回答为什么100个mc速度慢的问题,请记住Flash在虚拟机上运行,而抽象层是一个巨大的资源消耗层。