2014-12-20 5 views
1

내 플래시 파일에 이미지를 두 개로드하려고하는데 오류가 발생했습니다.이 AS3 malarkey에 대한 새로운 도움을 받으실 수 있습니다!두 개 이상의 하위 이미지로드 중 AS3

오류 받기 : 5 1151 : 내부 네임 스페이스의 정의 요청과 충돌이 발생했습니다.

var myImage:String = dynamicContent.Profile[0].propImage.Url; 
var myImage2:String = dynamicContent.Profile[0].prop2Image.Url; 

var myImageLoader:StudioLoader = new StudioLoader(); 
var request:URLRequest = new URLRequest(enabler.getUrl(myImage)); 
myImageLoader.load(request); 
myImageLoader.x =17; 
myImageLoader.y = 0; 

var myImageLoader2:StudioLoader = new StudioLoader(); 
var request:URLRequest = new URLRequest(enabler.getUrl(myImage2)); 
myImageLoader.load(request); 
myImageLoader.x =17; 
myImageLoader.y = 0; 

if(this.currentFrame == 1) { 
    addChildAt(myImageLoader, 2); 
} 

if(this.currentFrame == 2) { 
    addChildAt(myImageLoader2, 2); 
} 

답변

2

:

function loadImage(file:String, x:Number, y:Number):StudioLoader{ 
    var myImageLoader:StudioLoader = new StudioLoader(); 
    var request:URLRequest = new URLRequest(file); 
    myImageLoader.load(request); 
    myImageLoader.x = x; 
    myImageLoader.y = y; 
    return myImageLoader; 
} 
addChild(loadImage(enabler.getUrl(myImage1),17,0)); 
addChild(loadImage(enabler.getUrl(myImage2),17,0)); 

이것은 구조화 된 코드를 개선하는 것뿐만 아니라 함수 내부에 로컬로 정의 된 기능이 함수 내에 있기 때문에 중복 된 변수 정의 문제를 해결합니다.

http://www.adobe.com/devnet/actionscript/learning/as3-fundamentals/functions.html

+0

이미지의 크기를 어떻게 추가했는지 알고 있습니까? 몇 가지 다른 크기의 배너에 대해 동일한 이미지를 사용하고 있습니다 ... myImageLoader.height = 200; 예를 들어 작동하지 않습니다. – Dave

+0

크기를 설정하기 전에 이미지가로드 될 때까지 기다려야합니다. http://stackoverflow.com/questions/3792979/how-to-resize-dynamically-loaded-image-into-flash-as3을 참조하십시오. –

1

당신은 그래서 당신이 이렇게 할 수있는 이러한 유형의 오류 방지하려면 하나를 기존, 귀하의 경우에는 내가 당신의 URLRequest request에 대해 말하기있어 같은 이름의 새 변수를 만들 수 없습니다 :

var myImageLoader2:StudioLoader = new StudioLoader(); 
// assing a new URLRequest to an existing var 
request = new URLRequest(enabler.getUrl(myImage2)); 
// here you want use the myImageLoader2, not myImageLoader 
myImageLoader2.load(request); 
myImageLoader2.x =17; 
myImageLoader2.y = 0; 

또는 : 그것은 복사 + 붙여 넣기를하고 대신 자신의 기능에 중복 코드를 이동하는 것이 좋은 생각

var myImageLoader2:StudioLoader = new StudioLoader(); 
// create a new URLRequest var, so the name should be different 
var request2:URLRequest = new URLRequest(enabler.getUrl(myImage2)); 
// here you want use the myImageLoader2, not myImageLoader 
myImageLoader2.load(request2); 
myImageLoader2.x =17; 
myImageLoader2.y = 0; 
+0

탑 맨, 많은 감사합니다! – Dave

0

는 또한, 당신이 myImageLoader2이 있지만 다음로드 요청을 원래 myImageLoader를을 사용하여 선언 번째 블록에주의 사항 :

몇 가지 통찰력을 제공 할 수 있습니다. 따라서 새로운 URLRequest를 선언하더라도 두 이미지가 모두로드되지 않습니다.

Akmozo의 해결책은 이것을 수정했습니다.

관련 문제