サイトトップ

Director Flash 書籍 業務内容 プロフィール
 

Macromedia Director非公式テクニカルノート

Flashスプライトに数値の変数を設定したい

ID: FN0501002 Product: Director

Platform: All
Viersion: MX 2004 and above

FlashスプライトにDirectorから変数を設定して、SWF内で使用したい場合があります。

Director MX 2004からは、Flashスプライト内の変数値を「取得」する場合には、getVariable()関数を使わず「スプライト参照.変数」(変数がメインタイムラインに設定されている場合)のドットシンタックスでアクセスすることができるようになりました[*1]。しかし、変数を「設定」する場合には,ドットシンタックスを使うと、アクセス対象の変数が存在しないため「Property not found」というスクリプトエラーになってしまいます。

[*1] ドットシンタックスを使ったFlashスプライト内のオブジェクトへのアクセスについては、「Flashスプライトを操作する」をご参照ください。

1. setVariable()関数を使う
Flashスプライト内に変数を「設定」したい場合には、setVariable()関数を使う必要があります。つぎのスクリプトは、Flashスプライトの_rootに変数myVariableを設定し、値として文字列"test"を代入します。なお、Flashスプライトはsprite(1)とし、[メッセージ]ウィンドウで試します。

スクリプト001■メッセージウィンドウでFlashスプライトに変数を設定

mySprite = sprite(1)
mySprite.setVariable("_root.myVariable", "test")
-- ドットシンタックスでFlashスプライトの変数にアクセス
put mySprite._root.myVariable
-- "test"

問題は、数値を設定したい場合です。setVariable()関数で変数の値を指定する第2引数は、ストリング(文字列)でなければなりません(図001)。

図001■setVariable()関数にストリング以外を指定するとスクリプトエラーになる

2. 2段構えで数値を設定する
setVariable()関数を使うと、変数にはストリングを設定するしかありません。しかし、ひとたび変数が設定されれば、ドットシンタックスで値の変更は可能です。したがって、一旦文字列で変数を設定してから、数値で上書きすればよいでしょう[*2]。

以下のスクリプト(スクリプト002)は、setVariable()関数で一旦ストリング値の変数を設定してから、ドットアクセスで変数値を数値に書替えます。Flashスプライトをsprite(1)とし、[メッセージ]ウィンドウで試します。

スクリプト002■ストリング値の変数を設定して数値を代入

mySprite = sprite(1)
mySprite.setVariable("_root.myVariable", empty)   -- 空文字列(empty)の変数を設定
mySprite._root.myVariable = 1   -- 変数に数値を代入して上書き
put mySprite._root.myVariable
-- 1.0000


[*2] FlashのSWFでは変数のデータ型は限定されず、文字列を数値にするなど、値を自由に書替えることができます。ActionScript 2.0で可能になったデータ型の指定は、コンパイル(SWF書出し)時のみの実装で、書出したSWFにはデータ型の情報はありません。

_____

作成者: 野中文雄
作成日: 2005年10月6日


Copyright © 2001-2006 Fumio Nonaka.  All rights reserved.