2012-12-05 2 views
1

다음 함수를 사용하여 라이브러리의 일부 이미지를 스테이지에 추가하고 있습니다. 내가 할 수 있도록하고 싶습니다 무엇as3 - 함수에 라이브러리 이미지 이름을 전달하여 스테이지에 추가합니다.

function AddImage(image_name:String):void { 
    if(image_count == 4) return; 
    // change the following line so it uses "image_name" 
    var defaultImage:added_1 = new added_1(100, 100); 
    var tmpImage:Bitmap = new Bitmap(defaultImage); 
    tmpImage.x = 124.5 + (108.5 * image_count); 
    tmpImage.y = 1511.9; 
    addChild(tmpImage); 
    image_count++; 
} 

함수에 문자열 매개 변수로 이미지의 이름을 전달하지만,이 작업을 수행하는 방법을 알아낼 수없는 것입니다.

누군가 나를 도울 수 있습니까?

답변

0

싶은 것은 당신이 인스턴스를 만들 수 있도록의 getDefinitionByName를 사용을 통해 클래스 정의를 얻을 수있다, 다음 코드는 당신이 그렇게 할 방법 :

:

// you'll need to add this import to use getDefinitionByName 
import flash.utils.getDefinitionByName; 

function AddImage(image_name:String):void { 
    if(image_count == 4) return; 
    // this next line gets the class definition of the image_name 
    var imageClass:Class = getDefinitionByName(image_name) as Class; 
    // this is how you create an instance of that class 
    var defaultImage:BitmapData = new imageClass(100, 100); 
    var tmpImage:Bitmap = new Bitmap(defaultImage); 
    tmpImage.x = 124.5 + (108.5 * image_count); 
    tmpImage.y = 1511.9; 
    addChild(tmpImage); 
    image_count++; 
} 

변경 가져 오기입니다

import flash.utils.getDefinitionByName;

이들 두 라인 :

var imageClass:Class = getDefinitionByName(image_name) as Class; 
var defaultImage:BitmapData = new imageClass(100, 100); 
ReferenceError: Error #1065: Variable <YourImageClassName> is not defined. 

: 23,414,주 --- 은 또한 플렉스로 컴파일하는 경우 다음과 같은 오류가 플래시 IDE, 반대로 어떤 경우에는 당신이 문제로 실행할 수 있음을 언급하고 싶었다 그 상황을 처리하는 방법은 컴파일러에 대한 클래스 변수 선언에 변수를 선언하여 해당 기호를 인식하는 것입니다.

은 그래서 두 개의 이미지 클래스 이름은 같은 것을 할 것이다 당신의 클래스 선언에서, IMAGE_1 및 IMAGE_2 인 경우 : 당신이 이미지의 톤이있는 경우

private var forCompiler1:image_1; 
private var forCompiler2:image_2; 

, 즉 통증이있을 수 있습니다,하지만 그것은이다 유일한 방법은 그들을 인식하는 컴파일러를 찾았습니다. :/haha ​​

관련 문제