Flash/as3.0

    runtime sharing을 통해 폰트임베드하기

    runtime sharing을 통해 폰트임베드하기

    1. 샘플은 font.swf, test.swf, useFont.swf 3가지로 구성되어있다.font가 export될 sharing swf이고, useFont가 font를 import하여 사용할 swf.test는 useFont를 URLLoader.load() 하여 화면에 보여줄 컨테이너 swf이다. 2. font.fla의 안에 sharing할 폰트를 구성한다.라이브러리에 폰트를 추가한다. 3. Character ranges에 임베드할 문자들을 체크한다. 4. ActionScript탭으로 넘어가서 Export for ActionScript, Export in Frame 1에 체크한 후Export for runtime sharing에 체크한다.그리고 URL에 font.swf를 적어준다. 파일명을 적절히 적으면..

    LoaderInfo.uncaughtErrorEvents 발생 환경

    LoaderInfo.uncaughtErrorEvents는 try..catch문으로 잡지 못한 에러나 ErrorEvent 리스너가 등록되지 않은 에러에 대해서 하나의 SWF당 한곳으로 몰아넣는 역할을 한다. this.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, this.onAllRuntimeError); function onAllRuntimeError(e:UncaughtErrorEvent):void { if (e.error is Error){ //Error }else if (e.error is ErrorEvent){ //ErrorEvent }else{ //etc Errors } } 다만, 플래시 빌더에서..

    도메인이 다른 swf의 자원 사용하기

    안드로이드에서.. File.applicationDirectory는 url이 "app:/", File.applicationStorageDirectory의 url은 "app-storage:/" 가 된다.그렇기 때문에 applicationDirectory에 설치된 앱은 applicationStorageDirectory의 swf를 로드해서 그 안의 자원을 사용하려고 하면 보안 에러가 발생한다. 일반적인 Loader.load()를 사용하여 swf를 로드했다면 위와 같은 문제가 발생하지만Loader.loadBytes()를 이용하면 해결된다. package { import flash.display.Loader; import flash.display.MovieClip; import flash.events.Event; ..

    자기 클래스 이름 알아내기

    package { import flash.utils.describeType; public class Test{ public function Test() { // constructor code trace(describeType(this)); trace(describeType(this).@name); } } } describeType이라는 놈을 이용하면 클래스에 대한 정보를 xml형식으로 받아올 수 있다. 정보 xml중 name속성을 이용하면 현재 클래스 이름을 참조 가능하다.

    Premium Features에 관한 내용.

    Stage3D클래스의 requestContext3D함수에 다음과 같은 내용이 있다. "참고: 하드웨어 가속 Stage3D와 ApplicationDomain.domainMemory를 모두 사용하는 내용에는 라이센스가 필요합니다. 자세한 내용은 adobe.com/go/fpl_kr을 참조하십시오." 첫번째, Stage3D와 ApplicationDomain.domainMemory 둘 다 사용할 경우에 비용을 지불한다. 즉, 둘 중 하나만 쓰면 비용이 발생하지 않는다. 두번째, 두가지 다 사용할 경우 수익이 $50,000가 넘으면 9%를 지불한다. 세번째, 두가지 다 사용할 경우 라이센스 비용을 지불 안했다면 디버그 버전에선 정상 작동하나릴리즈버전일 때 워터마크가 붙는다. 그리고 GPU를 사용할 수 없다.

    stage3D.requestContext3D() 호출시 런타임 에러

    stage3D.requestContext3D(); 실행시 런타임 에러가 발생하는 경우가 있다. "Error #2044: Unhandled ErrorEvent:. text=Error #3702: Context3D not available." Context3D를 사용할 수 없는 상태이므로 이럴때는 "프로젝트명-app.xml"에서 gpu 로 변경해준다. *참고 : 웹상에 바로 올릴 때는 html임베드시 를 direct로 해주어야 한다.

    [펌]ActionScript에서의 Deep copy

    사실 이 내용은 3일밤낮을 머리싸매고 고민하며 온갖 방법들을 이용해서 Deep copy를 시도하다가 모르겠어서 맘먹고 구글링을 한 3시간 해서 찾아낸 결과이다. 정말 힘들었다. ㅠㅠ 학생들을 가르치다보면 벽에 부딪히는 부분이 가끔 있다. Call by value 와 Call by reference의 차이를 이해를 못 한다는 것이었다. C언어를 가르칠 때 포인터를 설명하며 알려주면 쉽게 이해하는 부분이었지만, 요즘 대부분은 모바일의 여파 때문인지 JAVA를 먼저 배우는 것 같다.(즉 안드로이드 때문 --;) 그래서 그 들에게 설명할 때 내 머릿속에는 포인터로 이해되어있는 내용을 포인터란 단어를 꺼내지 않고 설명하는 것은 상당히 곤란한 일이었다. 그래서 언제나 예시로 배열을 하나 생성해서 대입을 해주고 값을..

    IKManager.getArmatureByName 사용하기

    IKManager.getArmatureByName 사용하기

    역기구학 : 뼈와 관절구조를 사용하여 객체나 객체집합이 서로 유기적으로 움직이도록 애니메이션 처리하는 방법. 역기구학에 흥미를 느껴 플래시로 역기구학(fl.ik 패키지)을 테스트해 보았다.하지만 처음부터 막혔다. 툴 상자에서 Bone Tool(뼈 모양 툴)을 사용하여 IK Armature를 만들었다. 그리고 Armature객체를 참조하기 위하여 IKManager.getArmatureByName()를 사용하였다.import fl.ik.*; var tree:IKArmature = IKManager.getArmatureByName("ArmatureTest"); trace(tree); //null분명 fla상에는 IK Armature이름이 "ArmatureTest"로 잘 되어있다.하지만 곧 죽어도 null이다...