人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

FLASH AS3 で、PHP の可変関数と同等の事って出来るんでしょうか?

●質問者: rikimaru
●カテゴリ:インターネット ウェブ制作
✍キーワード:as3 FLASH PHP 関数
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● GoldenDawn
●27ポイント
var fname:String = 'hoge' ;
eval(fname + '()') ;

とかですかね。


http://q.hatena.ne.jp

◎質問者からの返答

どうやら、eval 関数が、AS3 からなくなってしまったようなのです


2 ● 牛乳先生(tukihatu)
●27ポイント
var inname = "btn01";
this[inname]._x = 500;

とかアクセス演算子でいけませんか?

http://www.fumiononaka.com/TechNotes/Flash/FN0507001.html

◎質問者からの返答

これも参考になります

今回やりたいのは、 _x の部分を可変にしたいのです

if (kubun == "x") {

this[inname]._x = 500;

}

if (kubun == "y") {

this[inname]._y = 500;

}

みたいなことをしたくて、この kubun が大量にあると

if が大量に必要なのど、プロパティーやメソッドを

ずらずら書くのが面倒なので、

一発で処理できないかと思っての質問でした

んー、調べるかぎり、eval がなくなって

代替がなくなったのかなぁ?


3 ● 牛乳先生(tukihatu)
●26ポイント ベストアンサー

evalは完全になくなりましたねー。

うーん、evalでどこまでの文を回したいのかわからないので本当に例えばですけど

こういうことがやりたいんでしょうかね…?

var My_size = {xsize:"100", ysize:"100", zsize:"100"};

var MCname = new Array("name1","name2");
var MCmez = "_x";//とりあえずx

for(var fname in MCname){
this[MCname[fname]][MCmez] = My_size["xsize"];
}

メゾットもアクション演算子でいけるはずです。

だからもしかしたら

var My_size = {xsize:"100", ysize:"100", zsize:"100"};

var MCname = new Array("name1","name2");
var MCmez = "x";//とりあえずx

for(var fname in MCname){
this[MCname[fname]]["_"+MCmez] = My_size[MCmez + "size"];
}

これでもいけるかもしれません。

試してみましたがちょっと挙動おかしかったですけど^^;

意図を外してたらすみません。

http://q.hatena.ne.jp/1220724274

◎質問者からの返答

試してたら、ちょっと返信が遅くなりました

package

{

import flash.display.*;

import flash.events.*;

public class S7 extends Sprite {

public function S7():void {

var mfnc = "abc";

this[mfnc]();

var mfnc = "xyz";

this[mfnc]();

}

private function abc() {

trace("111");

}

private function xyz() {

trace("222");

}

}

}

ドキュメントクラスをこうやって書いてみたら成功しました

どうやら、最期に () をつけると、ちゃんと関数として認識してくれるみたいです

実行すると、出力に

111

222

と表示されます

とても、参考になりました

ありがとうございました!!

#インデントが崩れる?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ