キーイベントの取得

Posted by muchag | ActionScript 2.0 | 2010-06-22 (火) 13:23:30

ユーザのキー入力を Actionscript で制御するには
オブジェクトインスタンスに

ActionScript

  1. onClipEvent (KeyDown) {
  2. }

なんて書いてやる方法もある。

が、フレームアクション(?)から制御してやるには
オブジェクトを作成して登録する必要があるようだ。
[as2]var keyListener:Object = new Object();
keyListener.onKeyDown = function() {
trace(“DOWN -> Code: ” + Key.getCode() + “\tACSII: ” + Key.getAscii() + “\tKey: ” + chr(Key.getAscii()));
};
Key.addListener(keyListener);[/as2]

2行目 keyListener.onKeyDown = function() 内には
キーが押されたときの処理を綴る。

どのキーが押されたかを取得するには
それぞれのキーのコードを取得する必要がある。

そのコードの一覧は、以下の参考元参照。

<参考元>
Adobe ヘルプリソースセンター:キーボードのキーとキーコードの値
 

Actionscript 3.0 では、Keyクラスが廃止された

らしい・・・。

参考サイトだけ残して、AS3を使うときに勉強することにしよう。

<参考元>
ITpro:Flash CS3入門 基本からActionScriptまで 第15回 キーボード入力を取得して利用する

ActionScript 2.0 | 2010-06-22 (火) 13:23:30 |

テキストの書式設定

Posted by muchag | ActionScript 2.0,ActionScript 3.0 | 2010-06-20 (日) 14:40:33

Flashでは、以下の3種のテキストが存在する。

  1. ダイナミックテキスト-Actionscriptにて制御可能。
  2. 入力テキスト-Actionscriptにての制御の他、ユーザからの入力に対応。
  3. 静止テキスト-パブリッシュ以降制御不能。

3は制御不能なので、ここでは1,2について。

書式設定をしたい場合は
まず TextFormat オブジェクト(クラス)のインスタンスを生成して
そのインスタンスのプロパティに代入。

ActionScript

  1. var text_format = new TextFormat();
  2. text_format.size = 12;      // 文字のポイントサイズ
  3. text_format.color = 0xFF0000;   // 文字の色

で、最後に設定を実行するわけだが
既存のテキストに設定する場合と
新たなテキストに設定する場合で
命令が異なる。

既存のテキストに設定する場合

「既存のテキスト」とは、既にステージ上に配置されているテキストフィールド。

ActionScript

  1. my_txt.setTextFormat(text_format);

ただ~し! ちょっと気になることが。

textFormat の null 以外のプロパティのみがテキストフィールドに適用されます。
textFormat で null に設定されているプロパティは適用されません。
デフォルトで、新しく作成された TextFormat オブジェクトのプロパティはすべて null に設定されます。

<引用元>
ActionScript 2.0 リファレンスガイド > ActionScript クラス > TextField > setTextFormat (TextField.setTextFormat メソッド)

2.0にのみ記述があり、3.0にはないのだが
「新しく作成したらデフォルトで全て null 」
ってことは・・・ステージ上で設定したものは全て無効で、
必要なプロパティは全て設定しなさなければいけないってことかな?

とビビリながら試してみたところ、必要なものだけでよさそう。

新たなテキストに設定する場合

「新たなテキスト」とは、Actionscript上で新たに設置されたテキストフィールド。
createTextFieldメソッドと併用する。

Actionscript 2.0 と 3.0 で異なる。

[as2 num=4]my_txt.setNewTextFormat(text_format);[/as2]

ActionScript 3

  1. my_txt.defaultTextFormat = text_format;

書式の違いは
setNewTextFormat はメソッド で
defaultTextFormat はプロパティ ということだ。

ActionScript 2.0,ActionScript 3.0 | 2010-06-20 (日) 14:40:33 |

データ型(AS2)

Posted by muchag | ActionScript 2.0 | 2010-06-20 (日) 1:05:27

Actionscript 2.0 におけるデータ型について。
cf) データ型(AS3)

プリミティブデータ型

単一の値を保持。

データ型 説明
Boolean プリミティブ。Boolean データ型は、true と false の 2 つの値から成ります。この型の変数に有効な値は、この 2 つだけです。宣言されていて、初期化されていない Boolean 型変数のデフォルト値は false です。詳細については、ブール (Boolean) データ型を参照してください。
null プリミティブ。null データ型の値は null です。この値は、値なし、つまりデータがないことを表します。null 値の代入は、プロパティや変数に値が割り当てられていないことを示すために、さまざまな状況で使用されます。null データ型は、複合データ型を定義するすべてのクラスでのデフォルトのデータ型です。ただし、Object クラスは例外で、undefined がデフォルトです。詳細については、ヌル (null) データ型を参照してください。
Number プリミティブ。このデータ型は、整数、符号なし整数、および浮動小数点数を表すことができます。浮動小数点数を格納するには、数値に小数点を含める必要があります。小数点を含まない場合、数値は整数として保存されます。Number データ型は、Number.MAX_VALUE (非常に大きい) ~ Number.MIN_VALUE (非常に小さい) の範囲の値を格納できます。詳細については、『ActionScript 2.0 リファレンスガイド』および数値 (Number) データ型を参照してください。
String プリミティブ。String データ型は、16 ビット文字 (英字、数字、区切り記号など) が連続したものを表します。ストリングは、UTF-16 形式を使用して、Unicode 文字として格納されます。String 値に対する操作は、そのストリングの新しいインスタンスを返します。詳細については、ストリング (String) データ型を参照してください。
undefined プリミティブ。undefined データ型の値は undefined だけです。これは、Object クラスのインスタンスのデフォルト値です。Object クラスに属する変数には、undefined という値のみを割り当てることができます。詳細については、未定義 (undefined) データ型を参照してください。
複合データ型(リファレンスデータ型)

複数のプロパティを持ち、それぞれの値を保持。
デフォルトで用意されているArrayクラスなどの他、独自クラスを作って複合データ型とすることが可能。

データ型 説明
MovieClip 複合。MovieClip データ型では、MovieClip クラスのメソッドを使用して、ムービークリップシンボルを制御できます。詳細については、MovieClip データ型を参照してください。
Void 複合。Void データ型の値は void だけです。このデータ型は、値を返さない関数を指定する場合に使用します。Void は、プリミティブの Void データ型を参照する複合データ型です。詳細については、Void データ型を参照してください。
Object 複合。Object データ型は Object クラスによって定義されます。Object クラスは、ActionScript のすべてのクラス定義に対する基本クラスとして機能し、オブジェクトの内部に別のオブジェクト (ネストされたオブジェクト) を配置することができます。詳細については、オブジェクト (Object) データ型を参照してください。

<引用元>
livedocs.adobe.com:プリミティブデータ型および複合データ型について

ActionScript 2.0 | 2010-06-20 (日) 1:05:27 |

配列の書き方

Posted by muchag | ActionScript 2.0 | 2007-03-10 (土) 17:47:16
ActionScript

  1. var myHoge:Array = [1, 2, "hoge"];
  2. var myHoge:Array = [1, ”hoge”], [2, ”hoge”]
  3. var myHoge:Array = new Array (1, 2, "hoge");
  4. var myHoge:Array = new Array ([1, "hoge"], [2, "hoge"]);
連想配列
ActionScript

  1. var my_array:Array = new Array();
  2.  
  3. my_array[] = 2000; <- 配列の最後に「2000」という要素を追加
  4. my_array&#91;5] = "あ行"; <- key 5 に「あ行」という要素を追加
  5. my_array&#91;"か行"] = ["か", "き", "く", "け", "こ"]; <- key か行 に左記の要素を追加[/as]
  6. <span class="emphasis_r">キーには文字列しか使えない</span> ので
  7. 4行目の key 5 は自動的に "5" になる・・・?
  8. けど、my_array[5] で要素を参照できる。
  9.  
  10. <span class="emphasis_g">右辺でkeyを記述したければ</span>
  11. "key1""(ダブルクォーテーション)を用いては<span class="emphasis_r">いけない</span>。
  12. [as]var myHoge:Array = new Array {key1:1, key2:2, key3:"hoge"};

しかし、要素を参照するときは

ActionScript

  1. a = my_array["key1"]; <- 配列アクセス演算子の場合
  2. a = my_array.key1; <- ドット演算子の場合&#91;/as]
  3. と、<span class="emphasis_r">配列アクセス演算子の場合は "(ダブルクォーテーション)を付けて記述しないといけない</span>。
  4.  
  5. そらそうだよね・・・"(ダブルクォーテーション)がなかったら変数になっちゃうもの・・・。
  6.  
  7. ここで面白いことを発見   8-)
  8. [as]a = my_array["ほげ"]; <- 配列アクセス演算子の場合
  9. a = my_array.ほげ; <- ドット演算子の場合&#91;/as]
  10. と全角文字を用いても可。
  11. (Actionscript 2.0 の Flash Player 8 および Flash Lite 2.0 にて動作確認)
  12.  
  13. 私個人としては
  14. 1行目は慣れているけど
  15. 2行目はビックリした。
  16.  
  17. <div class="flow2">連想配列の<span class="emphasis_b">プロパティ名</span>(キー)と<span class="emphasis_b">プロパティ値</span>(要素)を順番に参照</div>
  18. PHPでよくやるところの
  19. [php]foreach ($array as $key => $value) {
  20.   echo $key . ' => ' . $value;
  21. }[/php]
  22. をするときには
  23. [as]for (var key:String in array) {
  24.   trace(key + " => " + array[key]);
  25. }

という風に記述する。

Actionscriptにも foreach はあるんだけれども
key を取得することはできない(んだそうだ)。

<参考元>
polidog lab+:[ActionScript]連想配列でforとかforeachとか

多次元配列

Actionscript は配列が使いにくい。 X-(

3.0 では、大分解消されたようだけど
2.0 で多次元配列を使おうとすると、以下のよう。
[as2]var my_array:Array = new Array();

my_array[0] = new Array(“あ”, “い”, “う”, “え”, “お”);
my_array[1] = new Array(“か”, “き”, “く”, “け”, “こ”);[/as2]
とか

[as2]var my_array:Array = new Array();

my_array[0] = {0:”あ”, 1:”い”, 2:”う”, 3:”え”, 4:”お”};
my_array[1] = {0:”か”, 1:”き”, 2:”く”, 3:”け”, 4:”こ”);[/as2]
まず1階層目の配列宣言をし
2階層目をそれぞれ代入。

なんちゃぁ よーわからん・・・。

<参考元>
MdN:ActionScriptで2次元配列がつくれない >> ネストされた配列を作成する

ActionScript 2.0 | 2007-03-10 (土) 17:47:16 |