2010-08-22 4 views
1

main.swf와 external.swf라는 두 개의 SWF가 있습니다. main.swf가 external.swf에 몇 가지 방법에 액세스해야하는, 그래서 그 자체로 external.swf로드하고 클래스와 그 방법 중 하나에 액세스 할 ("package.Class")의 getDefinitionByName를 사용 : 이제AS3 및 getDefinitionByName()을 사용하여 동적으로로드되는 클래스의 public 메서드를 재정의합니다.

var ExternalClass = getDefinitionByName("package.Class") as Class; 
var ClassInstance = new ExternalClass(); 
var NeededFunction:Function = ClassInstance["NeededFunction"] as Function; 
var response:String = NeededFunction(param); 

을, NeededFunction (public 메서드)의 기능을 확장해야합니다 ... public 메서드를 재정의하는 것이 가능하다는 것을 알고 있지만 동적으로로드 된 클래스를 사용하면 어떻게됩니까?

것은 나는 이런 식으로 뭔가를 할 수있는 생각,하지만 작동하지 않습니다 모두 SWF에서 액세스 할 수있는 패키지의 클래스를 가질 수이 다루는

var ClassInstance["NeededFunction"] = function(param1:uint):String { 
    var newString = "Your number is: "+param1.toString(); //New functionality 
    return newString; 
} 

답변

0

또 다른 방법. 클래스의 루트 폴더를 Actionscript 경로에 추가하기 만하면됩니다.

getDefinitionByName을 사용하여 클래스를 가져 오는 대신 간단히 가져올 수 있습니다. 재정의와 관련하여 클래스 중 하나를 재정의하는 클래스를 만들거나 인터페이스를 만들 수 있습니다.

 

import com.yourlocation.ExternalClass; 

var external:ExternalClass = new ExternalClass(); 

+0

불행히도 SWF 클래스에 액세스 할 수 없거나 이전에 제안한 내용을 수행했을 것입니다. 필자가 확장해야하는 방법은 독점 SWC 라이브러리에서 가져온 것이므로 분해하지 않으면 SWC를 수정할 수 없습니다. – lefthandpath

+0

이 도움말은 도움이 될 수 있습니다 : http://www.airtightinteractive.com/2009/06/better-flash-asset-loading-using-swcs/ – PatrickS

0

FlashDevelop을 사용하면 매우 간단하게 수정할 수 있습니다.

프로젝트 목록에서 포함 된 swc를 마우스 오른쪽 버튼으로 클릭하십시오. 옵션을 선택하고 "include library (complete library)"를 선택하십시오.

.. 이제 getDefinitionByName을 사용하여 swc 파일에서 참조되지 않은 클래스를 가져올 수 있습니다.

관련 문제