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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2008/09/09 11:10:13
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tukihatu No.3

回答回数180ベストアンサー獲得回数32

ポイント26pt

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

id:rikimaru

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

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

と表示されます

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

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

#インデントが崩れる?

2008/09/09 11:09:58

その他の回答2件)

id:GoldenDawn No.1

回答回数426ベストアンサー獲得回数81

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

とかですかね。


http://q.hatena.ne.jp

id:rikimaru

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

2008/09/07 11:24:16
id:tukihatu No.2

回答回数180ベストアンサー獲得回数32

ポイント27pt
var inname = "btn01";
this[inname]._x = 500;

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

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

id:rikimaru

これも参考になります

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

if (kubun == "x") {

this[inname]._x = 500;

}

if (kubun == "y") {

this[inname]._y = 500;

}

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

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

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

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

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

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

2008/09/08 11:20:02
id:tukihatu No.3

回答回数180ベストアンサー獲得回数32ここでベストアンサー

ポイント26pt

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

id:rikimaru

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

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

と表示されます

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

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

#インデントが崩れる?

2008/09/09 11:09:58
  • id:tukihatu
    >this[mfnc]();

    ああー、すいません。
    ものすごい意図を外してました^^;
    参考になったから良かったものの…申し訳ない><

    例えばmfncにonClickが入っていて
    this[mfnc] = function(){}
    とかも出来たはずです。確かの話ですが。
  • id:rikimaru
    この手の話は、とっかかりがないと、どうにも手を付けられないので
    [] が使えると分かったことは、とても参考になりました、感謝です

    特に、AS3 は、手探りが多くて、とても助かりました!!



この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません