런타임에 인스턴스화 할 클래스의 이름이 포함 된 문자열이 있습니다. 내가 어떻게 그럴 수 있니?ActionScript 3에서 문자열의 클래스 인스턴스화
나는 flash.utils.getDefinitionByName()
를 사용하는 제안을 읽어
[Fault] exception, information=ReferenceError: Error #1065: Variable className is not defined.
런타임에 인스턴스화 할 클래스의 이름이 포함 된 문자열이 있습니다. 내가 어떻게 그럴 수 있니?ActionScript 3에서 문자열의 클래스 인스턴스화
나는 flash.utils.getDefinitionByName()
를 사용하는 제안을 읽어
[Fault] exception, information=ReferenceError: Error #1065: Variable className is not defined.
I가 함께 왔어요 가장 쉬운 방법은 단순히 밖으로 클래스 이름을 쓰기 :
var myClass:Class = getDefinitionByName("package.className") as Class;
var myInstance:* = new myClass();
그러나, 나에게 다음과 같은 오류를 제공합니다 프로젝트의 어느 위치에서나 세미콜론으로 구분됩니다.
나는 Assets.as가에두고 파일을 생성 : 이것에
package {
public class Assets {
// To avoid errors from the compiler when calling getDefinitionByName
// just list all of the classes that are not otherwise referenced in code:
Balloon;
Cloud;
FlyingHorse;
FlyingPig;
UFO;
Zeppelin;
}
}
전체 코드 예제/튜토리얼은 여기에 있습니다 : http://producerism.com/blog/flashpunk-dame-and-lua-tutorial-part-6/
고마워요! 이것은 문제를 해결했습니다. 나는 그것이 클래스를'import'하는 것만으로 충분하다고 생각했다. 컴파일러가 불필요하다고 생각한다면 실제로 들여 오기가없는 import 클래스인가? – Andy
올바른 - 수업을 가져 왔기 때문에 수업을 게시 할 때 실제로 컴파일 된 것은 아닙니다. Flash는 각 클래스의 사용법을 확인하고 실제 코드에서 찾은 코드 만 컴파일합니다. 그래서 파일 크기에 영향을주지 않고 import flash.display. *를 할 수 있습니다. – producerism
다른 옵션이 같이 mxmlc에 -includes 컴파일러 인수를 사용하는 것입니다
-includes=com.mydomain.package.MyClass
http://blogs.adobe.com/cantrell/archives/2010/09/loading-classes-dynamically-in-actionscript-3.html
클래스는 여전히 않습니다 모두가 현재의 AP를 확인하기 때문에, 정의를 얻을 수있는 플래시 위해 다른 곳에서 정의되어야한다플래시 빌더에만 사용할 수있는 것 같습니다. – BladePoint
plication 도메인. 이것은 내가 지금까지 고민하고 포기한 것입니다. – shanethehat