에 Flex/a s3 을 받으려면 어떻게 해야 하는 클래스 정의에 포함된 자산과 getDefinitionByName
-
01-07-2019 - |
문제
내가 있는 클래스와 많은 포함된 자산입니다.
클래스 내에서,나고 싶은 클래스 정의의 자산입니다.라이 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:립=새로운 정의();