[Stage3D] StarlingでAssetManagerクラス (3) ~外部アセットの読み込み~

Flash Player 11 から採用された Stage3D を学習するよ。 :bouzu:
Starling Framework を試しちゃうんだからね。 :girl:

starling_asset3

AssetManagerクラスで外部アセットを読み込んでみるよ。 :boy:
ひよこちゃん :piyo: をクリックすると、鳴くよ。

enqueueメソッドではなく、enqueueWithNameメソッドを用いてみた。 :bouzu:

:caution: 要 Flash Player 11.8 以上

This movie requires Flash Player 11.8.0

Main.as
package {

  import flash.display.Sprite;
  import flash.display.StageScaleMode;
  import flash.display.StageAlign;

  import starling.core.Starling;

  [SWF(backgroundColor="#FFFFFF", width="600", height="300", frameRate="60")]

  public class Main extends Sprite {
    // プロパティ
    private var starling:Starling;

    // コンストラクタ
    public function Main() {
      stage.scaleMode = StageScaleMode.NO_SCALE;
      stage.align = StageAlign.TOP_LEFT;
      init();
    }

    // メソッド
    private function init():void {
      starling = new Starling(MainView, stage, null, null);
      starling.enableErrorChecking = true;
      starling.start();
    }

  }

}



import starling.core.Starling;
import starling.display.Sprite;
import starling.display.Image;
import starling.display.MovieClip;
import starling.textures.Texture;
import starling.textures.TextureAtlas;
import starling.events.Event;
import starling.events.Touch;
import starling.events.TouchEvent;
import starling.events.TouchPhase;
import starling.utils.AssetManager;


internal class MainView extends Sprite {
  // プロパティ
  private var manager:AssetManager;
  private static var basePath:String = "assets/";
  private var texture:Texture;
  private var atlas:TextureAtlas;
  private var piyo:MovieClip;

  // コンストラクタ
  public function MainView() {
    addEventListener(Event.ADDED_TO_STAGE, init);
    addEventListener(Event.REMOVED_FROM_STAGE, remove);
  }

  // メソッド
  private function init(evt:Event):void {
    removeEventListener(Event.ADDED_TO_STAGE, init);
    manager = new AssetManager();
    manager.enqueueWithName(basePath +
"backtexture.png", "back");
    manager.enqueueWithName(basePath +
"piyotexture.png", "piyotexture");
    manager.enqueueWithName(basePath +
"piyoatlas.xml", "atlas");
    manager.enqueueWithName(basePath +
"piyosound.mp3", "sound");
    manager.loadQueue(loaded);

  }
  private function remove(evt:Event):void {
    removeEventListener(Event.REMOVED_FROM_STAGE, remove);
    Starling.juggler.remove(piyo);
  }
  override public function dispose():void {
    removeEventListener(Event.ADDED_TO_STAGE, init);
    removeEventListener(Event.REMOVED_FROM_STAGE, remove);
    super.dispose();
  }
  private function loaded(ratio:Number):void {
    if (ratio == 1) {
      complete();
    }
  }
  private function complete():void {
    texture = manager.getTexture("back");
    var back:Image = new Image(texture);
    addChild(back);

    back.width = 600;
    back.height = 300;
    atlas = manager.getTextureAtlas("piyotexture");
    piyo = new MovieClip(atlas.getTextures(), 60);
    addChild(piyo);

    piyo.currentFrame = Math.random()*60;
    piyo.pivotX = 26;
    piyo.pivotY = 59;
    piyo.x = 300;
    piyo.y = 200;
    Starling.juggler.add(piyo);
    piyo.addEventListener(TouchEvent.TOUCH, touch);
  }
  private function touch(evt:TouchEvent):void {
    var touch:Touch = evt.getTouch(stage, TouchPhase.ENDED);
    if (touch) {
      manager.playSound("sound");
    }
  }

}


[修正] (14/06/25 Wed 15:26)
Starling 1.5 にバージョンアップ。エラーが発生するので、Starling 1.5.1 にする必要があり。
[修正] (14/06/25 Wed 16:18)
Starling 1.5.1 にバージョンアップ。
[修正] (14/12/14 Sun 20:48)
Starling 1.6 にバージョンアップ。