분명히 여기에 뭔가가 빠져 있습니다.AS3 동적 클래스 동적 메서드 이름
배열에서 동적 AS3 클래스의 메서드를 채울 필요가 있습니다 (아래의 어리석은 예제 참조).
그러나 이러한 메서드를 호출하면 모두 동일한 메서드 인 것처럼 보입니다. 아래 예에서 모든 메소드는 foobar1
입니다.
루프없이 수동으로 메소드를 만드는 경우 모든 것이 좋습니다.
실마리가 있습니까?
package foo
{
public class Bar
{
public function testDynamicClassSanity():void
{
var foo:Foo = new Foo();
var methods:Object = { foobar1: 101, foobar2: 201, foobar3: 301 };
for (var key:String in methods)
{
var val:Number = methods[key];
foo[key] = function():Number
{
return val;
};
}
// Next trace prints
// 101 = 101 201 = 101 301 = 101
trace(
101, "=", foo.foobar1(),
201, "=", foo.foobar2(),
301, "=", foo.foobar3()
);
}
}
}
internal dynamic class Foo
{
};
네, 맞습니다 (거의 101입니다). 질문을 업데이트했습니다. 이 문제를 해결하려면 어떻게해야합니까? –
아, 나는 for 루프가 정의 된 순서대로 객체의 속성을 반복 할 것이라고 가정하고있었습니다. 물론 이것은 어리석은 가정입니다 .-)이 다른 질문을 확인하십시오. http://stackoverflow.com/questions/422784/ 문제 해결 방법 - 3-as3을위한 팁. –