Software Design 2007年10月号 の記事「Wii対応Webアプリ作りにチャレンジ!」を見ていたら、

「Flex 2 SDK が対応しているのは Flash 9 なので Wii 向けの Flash は作れない。MTASC を使えば Wii 用の Flash 7 アプリが開発可能」

というようなことが書いてあった。

というわけで、Nintendo Wii + Dragon Quest Swords + 似非Flash のフラッシュを MTASC で作りなおしてみたところ、Nintendo Wii から Flash が見れるようになった。

リモコンを振ると、閃光?が走って音が鳴る。
ヽ( ・∀・)ノ ワーイ。

できたもの ⇒ 似非ドラゴンクエストソード: Sham Dragon Quest Swords (for Wii)

以下、忘れないうちに MTASC の使い方をメモしておく。

MTASC とは

MTASC は Motion-Twin ActionScript 2 Compiler の略。
オープンソースの Flash コンパイラ。
ライセンスはGPL.

MTASC のインストールと設定

OS: Windows XP

MTASC (Motion-Twin ActionScript 2 Compiler) から mtasc-1.13.zip をダウンロードして解凍して適当なディレクトリへ設置。
今回は C:\mtasc\mtasc-1.13 に設置した。


C:\mtasc>tree
フォルダ パスの一覧:  ボリューム hoge
ボリューム シリアル番号は 0000ABD0 1234:ABCD です
C:.
├─mtasc-1.13
│  ├─std
│  │  ├─System
│  │  └─TextField
│  └─std8
│      ├─flash
│      │  ├─display
│      │  ├─external
│      │  ├─filters
│      │  ├─geom
│      │  ├─net
│      │  └─text
│      └─System

次にパス(環境変数PATH)を設定する。
デフォルトの環境変数を変えたくないので、configure.bat というバッチファイルに設定内容を書いておいて、必要なときに実行する。


C:\mtasc>type configure.bat
set PATH=C:\mtasc\mtasc-1.13;%PATH%

今回のソースコード(Slash.as)

ソースコードの文字コードは UTF-8。
テキストエディタでソースを書く。


class Slash
{
  public static function main() {
    var p = new Slash(_root);
  }
 
  private var root:MovieClip;
  private var canvas:MovieClip;
 
  private var MAX_X:Number = 780;
  private var MAX_Y:Number = 380;
 
  private var preMouseX:Number = 0.0;
  private var preMouseY:Number = 0.0;
 
  private var mySound:Sound;
 
  public function Slash(parent:MovieClip) {
 
    root = parent;
    root.createEmptyMovieClip("canvas", 100);
    canvas = root["canvas"];
 
    mySound = new Sound(_root);
    mySound.loadSound("se.mp3", false);
 
    var self:Slash = this;
    root.onEnterFrame = function () {
      var x:Number = this._xmouse;
      var y:Number = this._ymouse;
      self.aaaa(x, y);
    };
 
  }
 
  private function aaaa(x, y):Void {
 
      var diffX:Number = x - preMouseX;
      var diffY:Number = y - preMouseY;
 
      var right:Boolean = false;
      var left :Boolean = false;
      var down :Boolean = false;
      var up   :Boolean = false;
      if(diffX > MAX_X/2){
        right = true;
      }
      if(diffX < -MAX_X/2){
        left = true;
      }
      if(diffY > MAX_Y/2){
        down = true;
      }
      if(diffY < -MAX_Y/2){
        up = true;
      }
 
      if(right){
        if(down){
          doSlash(0, 0, MAX_X, MAX_Y);
        }else if(up){
          doSlash(0, MAX_Y, MAX_X, 0);
        }else{
          doSlash(0, MAX_Y/2, MAX_X, MAX_Y/2);
        }
      }else if(left){
        if(down){
          doSlash(MAX_X, 0, 0, MAX_Y);
        }else if(up){
          doSlash(MAX_X, MAX_Y, 0, 0);
        }else{
          doSlash(MAX_X, MAX_Y/2, 0, MAX_Y/2);
        }
      }else{
        if(down){
          doSlash(MAX_X/2, 0, MAX_X/2, MAX_Y);
        }else if(up){
          doSlash(MAX_X/2, MAX_Y, MAX_X/2, 0);
        }else{
          canvas.clear();
        }
      }
 
      preMouseX = x;
      preMouseY = y;
    }
 
  private function doSlash(x1:Number, y1:Number, x2:Number, y2:Number):Void {
    mySound.start(0,0)
    canvas.clear();
    canvas.lineStyle(10, 0x000000);
    canvas.moveTo(x1,y1);
    canvas.lineTo(x2,y2);
  }
 
}

# ActionScript 2.0 ぜんぜんわからない……超苦戦。

コンパイル

ソースコードを C:\mtasc\Slash.as に設置してコンパイル。


C:\mtasc>mtasc.exe -swf "slash.swf" -header 780:380:4 -version 7 -main "Slash.as"

slash.swf というファイルができた。

Flash 設置用の HTML コード

とりあえず、シンプルな形にしておいた。
あまりいろいろ指定して Wii で動かないと困るし。


<object width="780" height="380">
<param name="movie" value="slash.swf">
</param>
<embed src="slash.swf" type="application/x-shockwave-flash" width="780" height="380">
</embed>
</object>

Webサイトへ設置

HTMLファイルとmp3ファイルとswfファイルを設置。
今回は、mp3がswf埋め込みじゃないので、mp3もウェブサイトにおく必要がある。

設置したら Wii で動作確認。
似非ドラゴンクエストソード: Sham Dragon Quest Swords (for Wii)

以下、参考情報など。

Software Design 「Wii対応Webアプリ作りにチャレンジ」

Software Design 2007年 10月号の記事「Wii対応Webアプリ作りにチャレンジ! by 酒徳峰章(クジラ飛行机)」がとても参考になった。

インターネットチャンネルの仕様からはじまって、MTASC の導入、JavaScript と連携してリモコンのモーションセンサーを使う方法が書いてある。

サンプルアプリのソースコードが Software Design 2007年10月号 補足情報 「~Wiiリモコンで自由に操ろう~Wii対応Webアプリ作りにチャレンジ!」 からダウンロードできる。

ActionScript 2.0 API Reference

ActionScript のクラスのリファレンス等は Macromedia - Flash 8 LiveDocsFlashドキュメンテーション - ActionScript 2.0 リファレンスガイド を参考にした。

Adobe - ActionScript2.0 (Flex ActionScript および MXML API リファレンスガイド) というのもあるが、なんだかちょっと違う様子。

Sound クラスの使い方

MTASCと戯れる その後 - sshi.Continual を参考にした。
同ブログの Flash 関連のエントリ集 -> [flash] - sshi.Continual

mtasc.exe の usage


C:\mtasc>mtasc.exe
Motion-Twin ActionScript2 Compiler 1.13 - (c)2004-2007 Motion-Twin
 Usage : mtasc.exe [options] <files...>
 Options :
  -pack <path> : compile all files in target package
  -cp <paths> : add classpath
  -v : turn on verbose mode
  -strict : turn on strict mode
  -infer : turn on local variables inference
  -wimp : turn on warnings for unused imports
  -msvc : use MSVC style errors
  -mx : use precompiled mx package
  -swf <file> : swf file to update
  -out <file> : swf output file
  -keep : does not remove AS2 classes from input SWF
  -frame <frame> : export into target frame (must exist in the swf)
  -main : enable main entry point
  -header <header> : specify header format 'width:height:fps'
  -group : group classes into a single clip
  -exclude <file> : exclude classes listed in file
  -version : change SWF version (6,7,8,...)
  -trace <function> : specify a TRACE function
  -help  Display this list of options
  --help  Display this list of options

tags: zlashdot Flash Flash Game MTASC Wii

Posted by NI-Lab. (@nilab)