その本家本元のページはご覧になりましたよね?
↓↓↓
「第21回 Tweenクラスを使えばインスタンスを簡単に動かせる - Flash 8 入門講座:ITpro」
http://itpro.nikkeibp.co.jp/article/COLUMN/20060821/246028/
そのページの最初のスクリプトは実際に実行してみましたか?
↓↓↓
~~~ 引用 ~~~
//Tweenクラスを使用できるようにインポート
import mx.transitions.Tween;
import mx.transitions.easing.*;
//インスタンス「ball」の動きをTweenクラスを使って制御
var myTween:Tween = new Tween(
ball,
"_y",
Bounce.easeOut,
15,
220,
2,
true
);
~~~~~~~~~
ステージ上に「ball」というインスタンス名を付けたムービークリップを用意し,
上記スクリプトをフレームにコピペすれば「ball」が勝手に動くと思います。
上記スクリプトを
次のように発展(変形)させれば
何をすれば良いのかがある程度見えてくると思うのですが。
↓↓↓
~~~ 発展 ~~~
//Tweenクラスを使用できるようにインポート
import mx.transitions.Tween;
import mx.transitions.easing.*;
//関数dropBallの定義(引数 メソッド)
function dropBall(eas:Function):Void{
//インスタンス「ball」の動きをTweenクラスを使って制御
var myTween:Tween = new Tween(
ball,
"_y",
eas,
15,
220,
2,
true
);
}
//関数dropBallの実行(引数 Bounce.easeOut)
dropBall(Bounce.easeOut);
~~~~~~~~~
つまり,
関数dropBall を実行させるときの eas の部分を
コンボボックスによって変えてやれば良いということになります。
というわけで,ステージ上に
「ball」というインスタンス名のムービークリップと
「class_cb」というインスタンス名のコンボボックスと
「method_cb」というインスタンス名のコンボボックスと
「btn」というインスタンス名のボタンを配置した場合の
フレームに書くスクリプト例です。
↓↓↓
~~~ 回答 ~~~
//Tweenクラスを使用できるようにインポート
import mx.transitions.Tween;
import mx.transitions.easing.*;
//関数dropBallの定義(引数 メソッド)
function dropBall(eas:Function):Void {
//インスタンス「ball」の動きをTweenクラスを使って制御
var myTween:Tween = new Tween(ball, "_y", eas, 15, 220, 2, true);
}
//コンボボックス「class_cb」の設定
class_cb.addItem("Back", Back);
class_cb.addItem("Bounce", Bounce);
class_cb.addItem("Elastic", Elastic);
class_cb.addItem("Regular", Regular);
class_cb.addItem("Strong", Strong);
class_cb.addItem("None", None);
//コンボボックス「method_cb」の設定
method_cb.addItem("easeIn");
method_cb.addItem("easeOut");
method_cb.addItem("easeInOut");
//ボタン「btn」クリック時の動作
btn.onRelease = function():Void {
//選択されたクラスの取得
var my_class:Object = class_cb.selectedItem.data;
//選択されたメソッド名(文字列)の取得
var my_method:String = method_cb.selectedItem.label;
//関数dropBallの実行(引数 イージングメソッド)
dropBall(my_class[my_method]);
};
~~~~~~~~~
※Flash MX 2004 以上で使用可
Flash Player 7 以上で動作
ActionScript 2.0
ご質問より引用
> アドビのサイトに次のサンプルがありました。
そのサンプルのスクリプトは
コンボボックスの選択項目が閲覧者によってチェンジされたときに何かのイベントを起こすスクリプトですから
全体的には(大枠では)この場合あまり関係がありません。
そのスクリプトの中で
選択されたアイテムの取得のしかただけは関係があります。
ComboBox.addItem のシンタックス(記述規則)は次のようになっています。
ComboBoxインスタンス.addItem(label[,data])
ComboBoxインスタンス.addItem({label:label[,data:data]})
ComboBoxインスタンス.addItem(obj);
上記スクリプトでは,この3つの書き方うちの1つ目の書き方を使っています。
また,
上記スクリプトを見てもらえばわかると思いますが,
ComboBoxインスタンス.selectedItem.label
で選択されたアイテムのラベル(表示文字列)が取得でき,
ComboBoxインスタンス.selectedItem.data
で選択されたアイテムの設定データが取得できます。
それと最後の1行
dropBall(my_class[my_method]);
この引数である my_class[my_method] の部分がわからない場合は
Google などで「配列アクセス演算子」と検索してみてください。
お礼
舌足らずで申し訳ありません。 >trace(my_class[my_method]()); 合体が0???????????????でなく0.???????????????であるという疑問でした。 >その「クラス」と「メソッド」の狭間に「.」が必要なのです。 だから0.???????????????になるわけですね。 丁寧に具体例を示しながらありがとうございました。
補足
マトはずれなお礼をしていまいました。すみません。