모든 반복마다 맞춤 변수 이름을 설정해야합니다. 왜 이것이 가능하지 않습니까?동적 변수 이름 설정 ActionScript 3.0에서
for (var i:uint = 0; i < 50; i++)
{
var ['name' +i] = new Sprite();
}
*//1840: Syntax error: expecting identifier before left bracket*
모든 반복마다 맞춤 변수 이름을 설정해야합니다. 왜 이것이 가능하지 않습니까?동적 변수 이름 설정 ActionScript 3.0에서
for (var i:uint = 0; i < 50; i++)
{
var ['name' +i] = new Sprite();
}
*//1840: Syntax error: expecting identifier before left bracket*
이렇게하려면 해시 맵을 사용하고 싶습니다.
var map:Object = {};
for (var i:uint = 0; i < 50; i++)
{
map['name' +i] = new Sprite();
}
그렇지 않으면 컴파일러가 혼란 스럽습니다. 지역 변수의 동적 이름은 허용되지 않습니다.
이것은 내가 찾고 있던 것이지만 내 시나리오에서는 작동하지 않습니다. 나는 배열을 사용해야 할 것이다. livedocs에는 매우 잘 설명되어 있지 않습니다. 알맞은 정교함을 알고 있습니까? –
배열을 사용할 수도 있습니다. 또는 배열과 같이 맵을 반복 할 수 있습니다. (for (var n : String in map) {}). 어쩌면 당신은 당신이 이것을 해야하는 이유에 대해 더 자세히 설명 할 수 있습니다. 우리는 대안을 제안 할 수 있습니다. – Glenn
당신이하고있는 일에 따라이 문제를 해결할 수있는 방법이 있습니다. 이러한 클립이 모두 스테이지에 추가되면 getChildByName 메소드를 사용하여 해당 클립에 액세스 할 수 있습니다. 귀하의 설정은 다음과 같이 보일 것입니다 :
var clips:Array = [];
for (var i:int = 0; i < 100; i++) {
clips[i] = new MovieClip();
clips[i].name = "clip" + i;
addChild(clips[i]);
}
trace (getChildByName("clip2")); // traces [object MovieClip]
이는하지만, 디스플레이 API를 쿼리하여 수행됩니다, 그래서 당신은 어딘가에 표시 목록에 추가 아니에요 아무것도 사용해, getChildByName을 사용할 수 없습니다.
희망 하시겠습니까?
확실한 방법이지만 코드가 더러워집니다. –
동적 클래스는 봉인 된 클래스보다 느리기 때문에 권장하지는 않지만 클래스를 동적으로 만든 다음이 [ "varname"]을 사용하여 변수를 설정할 수 있습니다. Movieclip과 같은 동적 클래스를 확장 할 때도 클래스를 동적으로 지정해야합니다 (하위 클래스는 이것을 상속받지 않습니다).
dynamic public class MyClass{
....
....
....
for (var i:uint = 0; i < 50; i++)
{
this['name' +i] = new Sprite();
}
왜 배열을 사용하지 않습니까? – Amarghosh