我正在做一個遊戲,其中會有不同方面的人,我想知道如何加載一個單一的文件與動畫的每一幀,搜索了很多後,我在另一個Flash中創建了一個新的Ball類項目,自己做了這個代碼只是爲了測試AS3 Spritesheet動畫
public class Ball extends MovieClip {
private var spriteSheet:Bitmap;
public function Ball()
{
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.load(new URLRequest("Ball.png"));
}
private function onFrameLoop(e:Event)
{
switchFrame();
}
private function switchFrame()
{
var frameBitmapData:BitmapData = new BitmapData(50, 50);
frameBitmapData.copyPixels(spriteSheet.bitmapData, new Rectangle(0, (50*(currentFrame-1)), 50, 50), new Point(0,0));
var frame:Bitmap = new Bitmap(frameBitmapData);
this.addChild(frame);
}
private function onLoadComplete(e:Event)
{
var loaderInfo:LoaderInfo = e.target as LoaderInfo;
spriteSheet = loaderInfo.content as Bitmap;
this.addEventListener(Event.ENTER_FRAME, onFrameLoop);
}
}
}
和它的工作,我只是說5個空白關鍵幀上球的MC符號。問題是,如果我打算爲移動設備製作這款遊戲,並且同時在舞臺上可能會有20人,這是否足夠快?還必須有另一種方式,因爲XML文件必須用於正確的事情嗎?那麼另一種方式是什麼?
PD:我知道每次執行switchFrame函數時都不會刪除幀位圖。
請我需要一個很好的答案,不要鏈接我的東西,我可能不理解
爲什麼在公共靜態函數中? – user3217163
一個公共的靜態函數可以讓你做一些類的事情,而不需要創建那個類的實例。而且由於精靈圖片位圖實際上是針對課堂的,而不是針對任何一個球,所以在獲得它們球之前使其可用是很好的。並且該事件由代碼在調用靜態函數時生成的'loader'生成,在加載完位圖之後。 – Vesper