2011-07-22 68 views
0

我得到了以下问题:TweenLite无法使用对象

我有一个叫做tempScore的对象,用于我的游戏。

该对象由渲染器通过copyPixels方法传递给画布。该对象不是显示对象。这是一个分数对象(自制)。 Score-object扩展名为BasicBlitArrayObject的对象。 BasicBlitArrayObject扩展了一个EventDispatcher(因此没有显示对象)。

我试着将几个不同的TweenLite插件应用到我的tempScore对象(即TransformAroundCenter,colorMatrixFilter等)。但没有任何反应。绝对没有。

有时我会收到错误消息(当插件需要显示对象并且我的对象不是显示对象时)。到现在为止还挺好。根据Greensock(Tweenlite的制造商),他的引擎可以补间任何对象的ANY数值属性。所以当像TransformAroundCenter这样的插件需要一个显示对象进行补间时,我必须修改插件才能使它适用于我的非显示对象(tempScore)。目前我无法做到这一点,因为这对我来说太难了。

我的游戏搁置在此代码: http://www.8bitrocket.com/book/ch11_blastermines.zip

尝试使用所谓的tempMine游戏类BlasterMines内的对象适用TweenLite的。它不会工作。请帮忙吗?

回答

1

Greensock的声明是正确的,正确性。 您可以补间任何对象的任何数值属性。此声明不包括插件功能的应用。

TransformAroundCenter和ColorMatrixFilter插件不适用于您的原因是它们每个都使用DisplayObject的某些属性或方法。在transformAroundCenter的情况下,这是DisplayObject.localToGlobal()和ColorMatrixFiler它的DisplayObject.filters

我不得不问,你为什么将这些插件应用于不是显示对象的东西?在blitting(适用于AS3)中,基本思想是您从Sprite表单读取一个区域到一个BitmapData对象,然后您写入舞台上的Bitmap对象。 BitmapData和Bitmap都可以扩展DisplayObject,这正是你需要的。为了获得更高的兼容性,您应该将实际位于舞台上的Bitmap对象作为目标,否则TransformAroundCenter将无法正确使用不在舞台上的对象。

为了得到更好的答案,您将不得不张贴一些代码,并可能会显示调试器的屏幕截图,如Monster Debugger 3,它显示了扩展的显示树。