プログラミング工房
TOP
Flex基本
開発環境 JavaScript連携 PHP連携1 PHP連携2(AMFPHP) ウィンドウ ボタンスキン 矩形スキン ローカルファイル(テキスト) F5等の対策 ローカルファイル(イメージ) ダウンロード、アップロード 1枚の画像のカラーを変更 時間のかかる計算処理 外部SWFの読込み
Flexで3D
Flexだけで3D Papervision3Dを使ってみる 3Dオブジェクト カメラ、前後判定の工夫しました 自由な形状を作成
Flexでクラス
Class1(白黒ゲームの盤) Class2(白黒ゲームのプレイヤー) Class3(プレイヤーを外部SWF)
PHP
共通関数1
Flexの作品
お問合せの説明 サンプルのソース表示の説明 分子構造の表示(PDBファイル) マンデルブロ集合の画像作成 swf参加型白黒ゲーム(Reversi) ストップウォッチ WEB素材
AIR
AIRを使ってみる ソースファイルのHTML変換を作る
etc.
マンデルブロ集合のギャラリー ジュリア集合のギャラリー wonderflを使ってみました お問合せ

Flexでクラス-Class3(プレイヤーを外部SWF)

■2011.04.20:作成
サンプル サンプルのソース

外部SWFを読み込みクラスのように扱う

FLEXやFlashには外部SWFを読み込みクラスのように扱う事が可能です。
Flexでクラス-Class2(白黒ゲームのプレイヤー) のプレイヤークラスを外部SWFにして試して見ます。

プレイヤーSWFを作成する

clsPlCon1で「PlCon1.swf」を作ってみます。(clsPlMan.asも同じようにPlMan.swfにします)

「FlashDevelop」を起動し新規プロジェクトを作成
 ・メニュー-プロジェクト-新規プロジェクトを選択
 ・NewRoroject画面
   テンプレート-AS 3 Roroject(今回はFlex 4 ではなく)
   名称-----PlCon1

作成したプロジェクトの「src」フォルダの下に「clsPlCon1.as,clsPlayer.as,clsRevCom.as」
ファイルをコピーします。

各ファイルの「package cls {」を「package {」に変更
(FlashDevelopで各ファイルを開くと削除してくれます。)

FlashDevelopでclsPlCon1.asでマウス右クリックで「コンパイル対象に指定」
FlashDevelopの画面

不要な「main.as」を削除します。

ビルドすれば「PlCon1.swf」が作成されます。

追加のプレイヤー clsPlCon2.as

サンプルにはプレイヤー「clsPlCon2」を追加しました。

基本的には「clsPlCon1」と同じですが、各升目に以下のような重みをもたせ思い升目から選ぶようにしました。 (clsPlCon1より多少強い)
        //升目の重み
        private const arrOmomi:Array = new Array(
                    new Array(9,1,2,2,2,2,1,9),
                    new Array(1,1,2,2,2,2,1,1),
                    new Array(2,2,3,3,3,3,2,2),
                    new Array(2,2,3,3,3,3,2,2),
                    new Array(2,2,3,3,3,3,2,2),
                    new Array(2,2,3,3,3,3,2,2),
                    new Array(1,1,2,2,2,2,1,1),
                    new Array(9,1,2,2,2,2,1,9)
                );

利用する側の変更

「Loader()」を利用すれば読み込めました。

いくつかのサイトをみていると「Object」の所が「MovieClip」になっていましたが、 MovieClipだとswf内の関数がコールできませんでした?
//プレイヤー読み込み
private function onPl1(swfNam:String):void {
    loaPl = new Loader();
    loaPl.contentLoaderInfo.addEventListener(Event.COMPLETE,compLoader1);
    loaPl.load(new URLRequest(strSwfUrl+swfNam));
}
public function compLoader1(evt:Event):void {
    while (pl1.numChildren) pl1.removeChildAt(0);
    pl1.addChild(loaPl);
    arrPl[0] = loaPl.content as Object;
    arrPl[0].setColor( clsRevCom.getFirstPlayer(), objBoard.chkIti,
        objBoard.masuJyoutai, objBoard.getRireki, objBoard.Kekka);
    if(arrPl[1] != null) {btnStart.enabled =true;}
}

swfNamがswf名("PlCon1.swf")です。 FREXやflashは外部swfを読み込めば本体をビルドすることなく新しいクラス(機能)を追加することができる。

プログラミング工房