에 Flex/a s3 을 받으려면 어떻게 해야 하는 클래스 정의에 포함된 자산과 getDefinitionByName

StackOverflow https://stackoverflow.com/questions/87557

문제

내가 있는 클래스와 많은 포함된 자산입니다.

클래스 내에서,나고 싶은 클래스 정의의 자산입니다.라이 getDefinitionByName(),도 ApplicationDomain.currentDomain.getDefinition()지만 둘 다 작동합니다.

예제:

public class MyClass
{
  [Embed(source="images/image1.png")] private static var Image1Class:Class;
  [Embed(source="images/image2.png")] private static var Image2Class:Class;
  [Embed(source="images/image3.png")] private static var Image3Class:Class;

  private var _image:Bitmap;

  public function MyClass(name:String)
  {
    var ClassDef:Class = getDefinitionByName(name) as Class;  //<<-- Fails
    _image = new ClassDef() as Bitmap;    
  }
}

var cls:MyClass = new MyClass("Image1Class");
도움이 되었습니까?

해결책

이 귀하의 질문에 대답하지 않지만,그 문제를 해결할 수 있습니다.내가 믿고 다음과 같이 작업:

public class MyClass
{
  [Embed(source="images/image1.png")] private static var Image1Class:Class;
  [Embed(source="images/image2.png")] private static var Image2Class:Class;
  [Embed(source="images/image3.png")] private static var Image3Class:Class;

  private var _image:Bitmap;

  public function MyClass(name:String)
  {
    _image = new this[name]() as Bitmap;    
  }
}

var cls:MyClass = new MyClass("Image1Class");

나는 힘든 시간을 기억하는 경우 브래킷 표기 작품에서 밀봉된 클래스입니다.그렇지 않을 경우에는 간단한 솔루션을 표시하는 것입니다 클래스로 동적입니다.

다른 팁

하는 이유는 작동하지 않는 방법이기 때문에"Image1Class 은" 변수 이름,실제 클래스 이름.

당신을 얻을 수 있습니스 클래스 이름을 다음과 같이

import flash.utils.getQualifiedClassName;
trace(getQualifiedClassName(Image1Class));

는 당신이 볼 수있는 바와 같다는 것을 의미 클래스 이름(야 하는 것으로 전달 기능)가 MyClass_Image1Class.

당신을 사용할 필요가 없이 어떤 멋진 getDefinitionByName()메소드,단순히 그것을 참조합니다.귀하의 경우,교체하는'실패'라인:

var classDef:Class = MyClass[name] as Class;

그렇게해야합니다.

감사합니다!나는 그냥 보냈다는 거의 5 시간을 얻으려고 노력 POS getDefinitionByName 와 함께 작동하 getQualifiedClassName 준비가 되었 던져 재료!!최종 작동 코드는 다음과 같이고 심지어는 문자열을 가져옵 이름에서 훌륭한 기능들을 가지고 있습니다.

CreatureParam2dimentional 배열의 문자열

형식은 정수로 보내지는 플래시에 HTML 태그는 돌에서 온 MYSQL 데이터베이스를 통해 PHP.

Mark1_cb 가 콤보는 스테이지에서는 인스턴스 이름을 지정합니다.출력은 정수입니다.

그래서 이 코드는 바로 아래로 가져옵 클래스"BirdBodyColor_mc"에서 외부 swf"ArtLibrary.swf".BirdBodyColor_mc 은립에서 만들어진 png 이미지입니다.참고해야 합니다 더블 클릭립에 ArtLibrary.fla 과하면 두 번째 키 프레임입니다.무비 클립은 분명히 필요한 두 개의 프레임 또는 플래시하려고 가져오기로 스프라이트 그 원형이 일치하지 않습니다.

[포함(source="ArtLibrary.swf",기호="BirdBodyColor_mc")] var BirdBodyColor_mc:클래스

일반적으로 내가 그의 인스턴스 이립래 무대에 이를 이용하여 코드입니다.

myMC:립=new BirdBodyColor_mc();해당(myMC);

var 정의:Class=이["BirdBodyColor_mc"]로 클래스var Mark1:립=새로운 정의();

그러나 내가 이것을 할 필요가 사용하는 문자열 값에 나열합니다.그래서 여기에는 코드입니다.

var 정의:Class=이[CreatureParam[Type][Mark1_cb+2]]로 클래스var Mark1:립=새로운 정의();

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top