1

我正在尝试为 DisplayObjects 的旋转制作精灵表,似乎 gotoAndStop() 调用不起作用。

这是正在发生的事情的一个例子:

function createRotationalSpriteSheet ( displayObject : DisplayObject )
{
    findMaxTileDimensions( displayObject );
    MovieClip( displayObject ).gotoAndStop( 1 ); // this call does not work.
}

function findMaxTileDimensions ( displayObject : DisplayObject )
{
    MovieClip( displayObject ).gotoAndStop( 1 ); // this call works fine
}

对于不起作用的 gotoAndStop 调用,标签和帧号会更新,但是当我尝试使用 BitmapData.draw 绘制 DisplayObject 时,该帧仍然停留在 findMaxTileDimensions 函数中被告知要转到的最后一帧上。

这是因为我在一个输入帧中多次调用 gotoAndStop 函数吗?是因为我在同一个输入框架中从两个不同的函数调用 gotoAndStop 吗?

4

4 回答 4

2

这里似乎正在发生一些事情。您正在使用 gotoAndStop(),但在其他所有事情发生之前不会更新图像。从文档 - http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/MovieClip.html#gotoAndStop () - “将播放头带到影片剪辑的指定帧并停止它在那里。这发生在框架中所有剩余的动作都完成执行之后。所以如果你想让它工作,那么你需要在多个帧上做。

其次,您提到这是为了整理 DisplayObjects 的旋转以将它们绘制为 BitmapData - MovieClip 中是否有动画?或者是MovieClip 旋转的动画。如果是后者,那么通过代码设置旋转并绘制不同的角度将按照您的尝试进行(即全部在一帧中)

还可以通过 bit101 查看 SWFSheet: http: //www.bit-101.com/blog/ ?s=swfsheet 。它被用来制作动画并为其导出 PNG 精灵。那里可能有代码,我不确定。在任何情况下,您都可以保存动画,然后将其嵌入/加载

于 2011-03-17T12:27:09.120 回答
1

这听起来可能是 AIR 中的这个已知错误(假设它只发生在 AIR 中): https ://bugbase.adobe.com/index.cfm?event=bug&id=3340012

错误报告提到了一个 hacktastic 解决方法,我刚刚验证它确实有效:在运行之前将您的 MovieClip 添加到舞台。完成后您可以将其删除。

或者,您可以将 MovieClip 实例化两次(一次用于获取尺寸,一次用于创建 BitmapDatas),或者在您的 MovieClip 开头添加一个空的虚拟帧并忽略第一帧。

于 2012-12-15T01:14:32.537 回答
-1

这里发生了两件事。主要问题是 gotoAndStop 是基于 1 的,而不是基于 0 的。gotoAndStop(0) 不会产生错误,因为它需要一个对象(因此它可以采用标签或帧号)。

gotoAndStop 是基于 1 的,因为遗留原因 - 即与 flash IDE 中的旧处理方式相关联。

如果将其更改为基于 1 的系统仍然不起作用,则需要 addframescript(基于 0)查看我的答案here

AS3 - gotoAndStop 立即采取行动

于 2011-03-17T02:43:52.363 回答
-1

作为一个更好的用例,我认为最好使用位图,然后将其缓存在一些数据结构中:阅读: http ://www.8bitrocket.com/2010/3/3/Tutorial-AS3-How-to -Blit-an-animation-from-a-tile-sheet-embedded-at-compile-time/
同样,也许我对这个问题不是 100% 清楚,但为什么需要使用 enterframe 来创建精灵表?


您可以旋转位图然后将其捕获为位图数据,或者简单地对位图数据使用矩阵变换 http://www.8bitrocket.com/2010/05/01/tutorial-exploring-the-as3-bitmap-class -第 3 课 - 使用矩阵从中心缩放/

于 2011-03-17T05:15:02.603 回答