
この前、ミニゲーム集みたいなのを作る機会があって、
要求された仕様で、
・1つのswf内に複数のミニゲームを入れる。
・1つのミニゲームが終わったら、別のミニゲームがはじまる。
ってことをしないといけませんでした。
そのやり方(シーン遷移)メモ。
登場人物
まず、用意した2つのクラスについて説明します。
Mainクラス
Spriteを継承している。表示はされない。
表示するSceneを管理する人。
Sceneクラス
Spriteを継承している。表示される人。
Sceneが終わったことをMainにお知らせして、表示するSceneを切り替えることを要求する。
(今回の案件ではミニゲームに相当)
やりたいこと
以上!
デモ
wonderflに投稿したやつ。クリックで表示するSceneを切り替える。
シーン遷移(?) - wonderfl build flash online
ソースコード
Actionscript:
-
//Mainクラス
-
package
-
{
-
import flash.display.Sprite;
-
import flash.events.Event;
-
-
public class Main extends Sprite
-
{
-
-
public function Main():void {
-
changeScene();
-
}
-
-
private function changeScene():void {
-
var scene:Scene = new Scene(changeScene, 0xFFFFFF * Math.random());
-
addChild(scene);
-
}
-
}
-
-
}
-
-
//Sceneクラス
-
import flash.display.Sprite;
-
import flash.events.MouseEvent;
-
-
class Scene extends Sprite {
-
private var finishScene:Function;
-
-
public function Scene(f:Function, c:uint):void {
-
finishScene = f;
-
graphics.beginFill(c);
-
graphics.drawRect(0, 0, 465, 465);
-
graphics.endFill();
-
-
addEventListener(MouseEvent.CLICK, onClick);
-
}
-
-
private function onClick(e:MouseEvent):void {
-
removeEventListener(MouseEvent.CLICK, onClick);
-
parent.removeChild(this);
-
finishScene.call(this);
-
finishScene = null;
-
}
-
}
ポイント
SceneのonClickの中がポイント
finishScene.call(this);
MainのchangeSceneを呼び出して、シーンの切り替えを要求している。
くわしくは、こちら↓
Function - ActionScript 3.0 コンポーネントリファレンスガイド
parent.removeChild(this);
SceneをMainからremoveChildする。



