Flash/as2
目次
- 1 asメモ
- 1.1 コーディングについて
- 1.2 クラスの書き方
- 1.3 クラスを置くディレクトリを変更
- 1.4 クラスの継承
- 1.5 $(LocalData)/Classesとは
- 1.6 初期読込ファイル
- 1.7 トップムービークリップクラス
- 1.8 MCクラス内から子ムービークリップを操作する
- 1.9 MCクラス内にライブラリのMCを設定
- 1.10 クラスからクラス呼び出し
- 1.11 x,yを設定したままattach
- 1.12 イベント制御クラス
- 1.13 コンポーネント作成方法
- 1.14 イベント削除
- 1.15 X秒間隔でイベントを発生させる
- 1.16 flashにダイレクトに画像を表示させたい時
- 1.17 カラー部分に変数を入れる
- 1.18 文字列検索
- 1.19 IMEが有効なら切る
- 1.20 IMEで半角英数でないとき
- 1.21 AS2プリローダークラス(ローディング
- 1.22 as2アラートダイアログサンプル
asメモ
コーディングについて
基本スタイル
var str:String = "test"; var o:Array = [1, 2, 3]; var o:Object = {a: 1, b: 2, c: 3}; for (var i:int = 0; i < 3; i++) { doSomething(i); } function getId():String { return "test"; }
型自由の型宣言はこのように
var value:*;
MCなどの名前は_mcなどとしない。borderSkinなどとする。
コーディング規約URL http://www.trick7.com/blog/2008/03/14-131809.php
クラスの書き方
Class1.asを以下のように
class Class1 { public var id:Number = 1; // プロパティ private var pid:Number = 2; public function Class1(str:String) { trace("コンストラクタ" + str); this._private1() } public function getId():Number { return this.id; } // プライベートメソッド private function _private1():Void { trace("private"); } // 静的メソッド public static function static1():Void { trace("static"); } }
test.flaを以下のように
var c:Class1 = new Class1("a"); trace(c.id); trace(c.getId()); // static Class1.static1();
クラスを置くディレクトリを変更
asディレクトリにClass1.asを置きたい場合
Class1.asを以下のように
class as.Class1 { }
test.flaを以下のように
var c:as.Class1 = new as.Class1();
以下のようにすることも可能(コチラがコーディング規約で推奨)
import as.Class1; var c:Class1 = new Class1();
クラスの継承
class MyClass1 extends Class1 { public function MyClass1(str:String) { super(str); // 親コンストラクタへ } public function addMethod1():Void { trace("add"); } } var c:MyClass1 = new MyClass1("a"); c.addMethod1();
class as.MyClass1 extends as.Class1 // ディレクトリが違う場合
$(LocalData)/Classesとは
環境設定/actionscript/as2設定
C:\Documents and Settings\usr\Local Settings\Application Data\Macromedia\Flash 8\ja\Configuration\Classes
初期読込ファイル
toplevel.as
トップムービークリップクラス
ライブラリのシンボルを右クリックで、 リンゲージを開く。 as2.0クラスを設定する ここでdir1.MyMovieClipと入れると、 ./dir1/MyMovieClip.asが読み込まれる
例)MyMovieClip.fla トップシンボルからリンゲージas2にMyMovieClipを設定する。
test1.asに
class dir1.MyMovieClip extends MovieClip { public function MyMovieClip() { trace("よみこみ"); method1(); } public function method1():Void { trace("method1"); } public function onEnterFrame():Void { this._rotation += 2; } public function onRelease() { trace("releace"); } }
を設定 MyMovieClipのムービークリップをステージに設置。 コンパイルするとasが設定される。
MCクラス内から子ムービークリップを操作する
class ParentMc extends MovieClip { public var MyChild:MovieClip; public function ParentMc() { MyChild = this["MyChild"]; MyChild._rotation=100;
MCクラス内にライブラリのMCを設定
this.mc1 = this.attachMovie("mc1", "mc1", 300); trace(this.mc1._x);
クラスからクラス呼び出し
class dir1.MyMovieClip extends MovieClip { public function MyMovieClip() { var c:Class1 = new Class1; c.method1(); } } class Class1 { public function Class1() { trace("constractor"); } public function method() { trace("method1"); } }
x,yを設定したままattach
this.attachMovie("mc", "mc", 1, {_x: 150, _y: 90});
イベント制御クラス
import mx.events.EventDispatcher を使うとaddEventListenerが使える
例)
// mc1ムービークリップを用意しておく import mx.events.EventDispatcher; var objDispatcher:Object = {}; EventDispatcher.initialize(objDispatcher); objDispatcher.addEventListener("onEvent1", mc1); mc1.onEvent1 = function(objEvent:Object):Void { trace("onEvent1実行"); trace(objEvent.param1); }; objDispatcher.dispatchEvent({type:"onEvent1", target:mc1, param1:"param_a"});
コンポーネント作成方法
コンポーネントしたい物をMCで作成し、 スクリプトをclassで用意、 リンゲージ設定を行い、 ライブラリから右クリックでコンポーネント定義を行う。 書き出したい場合は、swc書き出しを行う。 書き出しを行い再起動すると、コンポーネントパネルに表示される。
イベント削除
this.onRelease = function() { delete this.onRelease; };
X秒間隔でイベントを発生させる
var intervalId:Number = setInterval(this, "_event1", 3000); // 3秒 function _event1():Void { trace("interfal1"); } clearInterval(intervalId); // イベント削除
flashにダイレクトに画像を表示させたい時
mc1をhtml許可にして
mc1.htmlText = "<img src='Winter.gif'>test<a href='http://www.example.com'><u><font color='#0000ff'>test</font></u></a>";
カラー部分に変数を入れる
beginFill(Number("0x" + color));
文字列検索
url = "file:///"; if (url.indexOf("file:") > -1) trace("match");
IMEが有効なら切る
if (System.IME.getEnabled()) { System.IME.setEnabled(false); }
IMEで半角英数でないとき
if (System.IME.getConversionMode() != System.IME.ALPHANUMERIC_HALF) { // 半角英数に変換 System.IME.setConversionMode(System.IME.ALPHANUMERIC_HALF); }
AS2プリローダークラス(ローディング
class lib.Preloader extends MovieClip { // ローダーMC var _loader:MovieClip; // constructer public function Preloader() { _init(); onEnterFrame = function() { // ロード率 var per:Number = Math.floor(_root.getBytesLoaded() / _root.getBytesTotal()) * 100; _loader._width = Math.floor(140 * per / 100); if (_root.getBytesLoaded() == _root.getBytesTotal()) { delete this.onEnterFrame; _root.gotoAndStop('main'); // removeMovieClip(this);// attachMovieで配置したときのみ有効 } } } private function _init() { // 枠表示 var _mc:MovieClip = this.createEmptyMovieClip('preloader', 100); _mc.beginFill(0xFFFFFF, 100); _mc.lineStyle(1, 0x444444, 100); _mc.moveTo(0, 0); _mc.lineTo(0, 20); _mc.lineTo(150, 20); _mc.lineTo(150, 0); _mc.endFill(); // ロードーMC _loader = this.createEmptyMovieClip('loader', 200); _loader.beginFill(0x555555, 100); //_loader.lineStyle(1, 0x000000, 100); _loader.moveTo(0, 0); _loader.lineTo(0, 10); _loader.lineTo(10, 10); _loader.lineTo(10, 0); _loader.endFill(); _loader._y = 5; _loader._x = 5; } }
as2アラートダイアログサンプル
// 利用方法 // 警告ダイアログクラス // import app.model.AlertDialog; // var _alert = new AlertDialog(_stage); // _alert.display("テスト"); // コンポーネントボタンクラス import mx.controls.Button; // 警告ダイアログクラス class app.model.AlertDialog { // ステージMC private var _stage:MovieClip; // ボタン private var _button:Button; // constructer public function AlertDialog(st:MovieClip) { _stage = st; } // アラートダイアログ表示 public function display(msg:String):Void { var _mc:MovieClip = _stage.createEmptyMovieClip("alert", _stage.getNextHighestDepth()); _mc.beginFill(0xFFFFFF, 100); _mc.lineStyle(1, 0x000000, 100); _mc.moveTo(0, 0); _mc.lineTo(0, 70); _mc.lineTo(160, 70); _mc.lineTo(160, 0); _mc.endFill(); _mc._x = Stage.width / 2 - _mc._width / 2; _mc._y = Stage.height / 2 - _mc._height / 2; // ラベル var _label:TextField = _mc.createTextField("label", 1, 0, 0, 150, 40); // 折返許可 _label.wordWrap = true; // 複数行 _label.multiline = true; _label.text = msg; // OKボタン生成 _button = _mc.createClassObject(Button, "button2", 5, {label:"OK"}); _button._y = _label._y + _label._height; _button._x = _mc._width / 2 - _button.width / 2; // OKボタンをクリックしたとき _button.onRelease = function():Void { // ダイアログ削除 this._parent.removeMovieClip(); } } }