article search result of 'AS3' : 53

  1. 2014.02.22 FLA Auto build utility for flashbuilder developer (2)
  2. 2013.01.12 [AS3] asmx 사용하기 (87)
  3. 2012.11.15 [AS3 Worker] Thread Test (2920)
  4. 2012.03.09 간단한 AS3 바이트 버퍼 나누기 (110)
  5. 2012.01.17 [Multitouch on 3D World] (92)
  6. 2011.12.19 [Base64] (282)
  7. 2011.10.15 [AS3 , Enum] AS3 에서 Enum Type 을 구현하자 (Fake Enum in AS3) (56)
  8. 2011.10.12 [AIR3] Setup in FB4.5 (164)
  9. 2011.04.28 [SimpleFileWriter] SimpleFileWriter를 이용한 파일레퍼런스 사용법 (366)
  10. 2011.03.31 [Molehill + AWAY3D] Hello Cube! (111)
  11. 2011.03.31 [StageVideo Test] StageVideoEvent = accelerated 를 위한 조건 (65)
  12. 2011.03.09 [FlashPlayer11 ] Molehill (116)
  13. 2011.02.10 [Diebuster -> Non blocking loop] 과제 답변 (94)
  14. 2010.12.17 [javascript] 자바스크립트 메소드를 AS3 에서 작성 / 호출 하기 (306)
  15. 2010.12.07 [WonderFL] Tenorion using QuickBox2D (126)
  16. 2010.12.04 간단한 비율을 유지한체 크기를 바꾸는 로직 (ResizeEvent) (100)
  17. 2010.12.04 [Tweensy] 방사체 만들기 (13)
  18. 2010.12.04 [ getDefinitionByName ] String 으로 Class 참조 (60)
  19. 2010.12.04 [64Bit FlashPlayer 10.1] flash player 64비트 브라우져별 테스트 (758)
  20. 2010.12.04 SimpleCam (93)
  21. 2010.12.04 [BitmapData의 갱신] (1)
  22. 2010.12.04 [적외선 카메라 만들기] 로지텍 퀵캠(울트라 비전)Ultra Vision (81)
  23. 2010.12.04 [MVC for AS3] 세상에서 가장 알기쉬운 MVC 구조 (110)
  24. 2010.12.04 [Flex4 , Flash Builder] addChild 가 없다니!! (128)
  25. 2010.12.04 [FLV] VideoDisplay를 상속한 클래스에서 재생리스트 구현시 다음 영상 playheadTime 문제 잡기 (732)
  26. 2010.12.04 [Loader] for문을 이용한 이미지 로드시 모든 이미지를 로드하지 못하는 버그 잡기 (81)
  27. 2010.12.04 [3D Model Loader]디자이너를 위한 3D (DAE , MD2)파일 테스터 (514)
  28. 2010.12.04 [AS3 Code Libraries] (743)
  29. 2010.12.04 [DAE Loader]디자이너를 위한 DAE 파일 테스터 (61)
  30. 2010.12.04 UI컴포넌트 안에 Sprite 를 쓰자!! (46)

FLA Auto build utility for flashbuilder developer

FLA Auto build utility for flashbuilder developer

'AS3' 카테고리의 다른 글

FLA Auto build utility for flashbuilder developer  (2) 2014.02.22
[AS3] asmx 사용하기  (87) 2013.01.12
[AS3 Worker] Thread Test  (2920) 2012.11.15
간단한 AS3 바이트 버퍼 나누기  (110) 2012.03.09
[Multitouch on 3D World]  (92) 2012.01.17
[Base64]  (282) 2011.12.19
Yamecoder 야매코더_
AS3 2014.02.22 13:17

[AS3] asmx 사용하기

 

서버측 코드

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace PlasticWorkService
{
    /// <summary>
    /// Summary description for sv
    /// </summary>
    [WebService(Namespace = "http://plasticfactory.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class sv : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public string Test()
        {
            return "TEST";
        }

        [WebMethod]
        public int sum(int a, int b)
        {
            return a + b;
        }

        [WebMethod]
        public string sum2(int a, int b, string str)
        {
            return a + b + str;
        }
    }
}

 

 

 

as3 Clinet 코드

 

package
{
    import alducente.services.WebService;
    
    import flash.display.Sprite;
    import flash.events.Event;
    
    public class TestWebService extends Sprite
    {
        private var ws : WebService = new WebService();
        public function TestWebService()
        {
            
            ws.addEventListener(Event.CONNECT , connected);
            ws.connect("http://plasticfactory.iptime.org:8000/sv.asmx?WSDL");
            ws.cacheResults = true;
        }
        
        protected function connected(event:Event):void
        {
            trace("connected");
            //ws.HelloWorld(done);
            //ws.sum(done , 10 , 20);
            ws.sum2(done , 10 , 20 , "str" );
        }
        
        private function done(xml : XML):void
        {
            trace("res" , xml);
        }
    }
}
 

 

done 이라는 콜백으로 메시지를 송신 한다.

 

 

클라이언트에서 파라메터를 무시하면 자동으로 null 처리 하지만 타입이 틀리면 에러를 반환한다.

출처 : http://labs.alducente.com/gophr/

'AS3' 카테고리의 다른 글

FLA Auto build utility for flashbuilder developer  (2) 2014.02.22
[AS3] asmx 사용하기  (87) 2013.01.12
[AS3 Worker] Thread Test  (2920) 2012.11.15
간단한 AS3 바이트 버퍼 나누기  (110) 2012.03.09
[Multitouch on 3D World]  (92) 2012.01.17
[Base64]  (282) 2011.12.19
Yamecoder 야매코더_
AS3 2013.01.12 14:25

[AS3 Worker] Thread Test

 

드디어 As3 에 Worker 라는것이 생겼다.

바로 Thread 이다.

하지만 , 방법이 조금 지저분 하다.

실행되고 있는 바이트 코드를 그대로 복제하여 ,백그라운드에서 실행하고 그 결과를 메시지 체널 형태로 주고 받는다.

정확한 Thread 의 개념 보다는 .NET 의 BackgroundWorker 쯤으로 생각하면 될듯하고

쓰레드를 직접실행할 클래스 형태가 필요하다.

 

아래의 ThreadManager 는 구차한 Worker 생성과정을 미리 생성하고 Thread 객체를 관리하는 매니저 역할이다.

또하나의 Worker1 클래스는 쓰레드 개체가 생성하게될 , 즉 쓰레드가 수행할 내용이다.

아래의 실험은 같은 개체를 동시에 실행 하였을때 쓰레드 블럭킹이 발생하는지 실험하는 코드이다.

 

* ThreadManager

 
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    
    import jjongun.threadWorker.Thread;
    import jjongun.threadWorker.ThreadEvent;
    import jjongun.threadWorker.ThreadManager;
    
    public class TestThread3 extends Sprite
    {
        private var thread1 : Thread;
        private var thread2 : Thread;
        public function TestThread3()
        {
            ThreadManager.Init(this.stage);
            
            thread1 = ThreadManager.getInst().createThread(Work1);
            thread2 = ThreadManager.getInst().createThread(Work1);
            
            thread1.addEventListener(ThreadEvent.RECEIVE , receive);
            thread2.addEventListener(ThreadEvent.RECEIVE , receive);
            
            thread1.start();
            thread2.start();
            
            stage.addEventListener(KeyboardEvent.KEY_UP , stageKup);
        }
        
        protected function stageKup(e:KeyboardEvent):void
        {
            if(e.keyCode == Keyboard.A)
            {
                trace("A");
                thread1.send(Work1.F1);
            }
            else if(e.keyCode == Keyboard.S)
            {
                trace("S");
                thread2.send(Work1.F2);
            }
        }
        
        protected function receive(e:ThreadEvent):void
        {
            if(e.currentTarget == thread1)
            {
                trace(e.receiveData);
            }
            else if(e.currentTarget == thread2)
            {
                trace(e.receiveData);
            }
        }
    }
}

 

 

 

 

package
{
    import flash.utils.getTimer;
    
    import jjongun.threadWorker.AbsThreadWorker;
    
    public class Work1 extends AbsThreadWorker
    {
        public function Work1()
        {
            super();
        }
        
        public static const F1 : String = "F1";
        public static const F2 : String = "F2";
        protected override function threadMessage(command:*):void
        {
            trace("command " , command);
            if(command == F1)
            {
                f1();
            }
            else if(command == F2)
            {
                f2();
            }
        }
        
    
        
        private function f1():void
        {
            trace("start _ f1 " , getTimer());
            
            var b : Boolean = true;
            var cur : Number = getTimer();
            while(b)
            {
                if(getTimer() - cur > 3000)
                {
                    b = false;
                }
            }
            
            trace("end _ f1" , getTimer());
        }
        
        private function f2():void
        {
            trace("start _ f2 " , getTimer());
            
            var b : Boolean = true;
            var cur : Number = getTimer();
            while(b)
            {
                if(getTimer() - cur > 3000)
                {
                    b = false;
                }
            }
            
            trace("end _ f2" , getTimer());
        }
    }
}

 

결과 블럭킹이 전혀 발생하지 않았고 상상했던 Thread의 역할을 충분히 수행해 주었다.

 

주의할점은 현재 시점으로 11.4 버전 -swf-version=17 만 가능하다.

혹 그 윗버전의 SDK 로 시도 해보았지만 작동이 안된다. 이유는 모른다. 버그 같다. 어도비 포럼에도 질문만 있을뿐 답이 없다.

머 ,, 곧 해결 되겠지만 , 현재 11.4 버전 만 된다. 버전 체크를 하여 수행하여야 하겠다.

 

'AS3' 카테고리의 다른 글

FLA Auto build utility for flashbuilder developer  (2) 2014.02.22
[AS3] asmx 사용하기  (87) 2013.01.12
[AS3 Worker] Thread Test  (2920) 2012.11.15
간단한 AS3 바이트 버퍼 나누기  (110) 2012.03.09
[Multitouch on 3D World]  (92) 2012.01.17
[Base64]  (282) 2011.12.19
Yamecoder 야매코더_
tags : AS3, Thread, worker
AS3 2012.11.15 23:38

간단한 AS3 바이트 버퍼 나누기






 
var file : File = new File("c:/img2-001.raw");
   fs = new FileStream();
   fs.open(file , FileMode.READ);
   
   var orgLength : int = fs.bytesAvailable;
   var c : int = 0;
   
   var totalByte : ByteArray = new ByteArray();
   var buffByte : ByteArray;
   var _buffLegth : int = 1024 * 2;
    while(fs.bytesAvailable)
   {
    trace(fs.bytesAvailable);
    if(fs.bytesAvailable < _buffLegth)
     break;
    
    buffByte= new ByteArray();
    fs.readBytes(buffByte , 0 , _buffLegth);
    totalByte.writeBytes(buffByte , 0 , buffByte.length);
    ++c;
   }
   
   buffByte= new ByteArray();
   fs.readBytes(buffByte , 0 , fs.bytesAvailable);
   totalByte.writeBytes(buffByte , 0 , buffByte.length);
   
   trace("result" , fs.bytesAvailable);
   trace(c , orgLength , totalByte.length);

'AS3' 카테고리의 다른 글

[AS3] asmx 사용하기  (87) 2013.01.12
[AS3 Worker] Thread Test  (2920) 2012.11.15
간단한 AS3 바이트 버퍼 나누기  (110) 2012.03.09
[Multitouch on 3D World]  (92) 2012.01.17
[Base64]  (282) 2011.12.19
[AS3 , Enum] AS3 에서 Enum Type 을 구현하자 (Fake Enum in AS3)  (56) 2011.10.15
Yamecoder 야매코더_
AS3 2012.03.09 18:27

[Multitouch on 3D World]





'AS3' 카테고리의 다른 글

[AS3 Worker] Thread Test  (2920) 2012.11.15
간단한 AS3 바이트 버퍼 나누기  (110) 2012.03.09
[Multitouch on 3D World]  (92) 2012.01.17
[Base64]  (282) 2011.12.19
[AS3 , Enum] AS3 에서 Enum Type 을 구현하자 (Fake Enum in AS3)  (56) 2011.10.15
[AIR3] Setup in FB4.5  (164) 2011.10.12
Yamecoder 야매코더_
AS3 2012.01.17 14:39

[Base64]




6메가 픽셀 정도의 비트맵 데이터를 JPEG 로 인코딩 하고 Base64로 변환해 보았다.
 
package
{
    import by.blooddy.crypto.Base64;
    import by.blooddy.crypto.image.JPEGEncoder;
    
    import flash.display.Bitmap;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.filesystem.FileStream;
    import flash.net.URLRequest;
    import flash.utils.ByteArray;
    import flash.utils.getTimer;
    import flash.utils.setTimeout;
    
    import jjongun.devUtil.Stats;
    
    
    [SWF(frameRate="60")]
    public class Base64_1 extends Sprite
    {
        public function Base64_1()
        {
            this.stage.addChild( new Stats);
            
            var loader : Loader = new Loader();
            loader.load( new URLRequest("sample_6MP_Image.jpg"));
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE , complete);
        }
        
        protected function complete(e:Event):void
        {
            var bitmap : Bitmap = e.currentTarget.content as Bitmap;
            
            var time : Number = getTimer();
            var imgBytes : ByteArray = JPEGEncoder.encode(bitmap.bitmapData , 100);
            trace( "JPEGEncode : " , getTimer() - time );
            
            time = getTimer();
            var str : String = Base64.encode(imgBytes , true);
            trace( "Base64Encode : " , getTimer() - time );
            
            
            
        }
    }
}

결과는
JPEGEncode :  1498
Base64Encode :  54

i7에서 54ms 정도로 쓸만하다

종전의 C# 소켓과 통신을 위해 헤더버퍼를 잡고 뒤에 데이터를 보냈는데 그럴 필요 없이
xml 에 Base64를 묶어서 보내는 프로토콜을 이용하면 좀더 편리하고 안전한 통신이 보장된다.

아울러 WCF 서버와 자료 교환에도 용이 할듯 하다.


Yamecoder 야매코더_
tags : AS3, base64
AS3 2011.12.19 10:30

[AS3 , Enum] AS3 에서 Enum Type 을 구현하자 (Fake Enum in AS3)


C#과 AS3 를 혼용 하여 사용하는 본인에게 AS3 에서 가장 아쉬운것중 하나는 Enum 타입이 없다는것이다.
물론 

class SomeClass{  
    static const ENUMStr : String = "ENUM_STRING";
}
이런식으로 클래스 안에서 열거 하여 사용은 가능하다. 그러나 관리 적인 측면에서 아래와 같은 경우가 발생할때 참으로 애매하다.

function insertEnumValue (_enumType : String):void
{
if(_enumType == SomeClass.ENUMStr ){ ... }
}


 위와 같은 상황에서 _enumType:String 의 값을 넣는 과정에서 함수 안의 코드가 SomeClass 에서 정확히 정의된 스트링을 받아 처리 한다면 아무런 문제가 없다. 하지만 함수의 인자 타입이 String 이다. 이것의 의미는 구지 함수 인자를 SomeClass.ENUMStr 을 안넣어도 아무런 문제가 되지 않는다 (쇠고랑 안찹니다... 경찰이 안잡아가요...)
컴파일러는 단지 일치하는 String 이 없을 뿐 , 에러를 뱉지 않지만 , 그게 더 문제다. 제3자가 이 함수를 사용한다고 하자 , 혹은 오래전에 작성했던 코드를 본인이 본다고 해보자. 아마 작성자가 SomeClass.ENUMStr 을 넣어 주리라고 기대하는것은 너무 아름다운 순정만화 같은 생각 아닌가?
(물론 본인은 예전에 함수 위에 주석으로 설명을 적어 올바른 작성을 유도 하였다. 하지만 코드 자체가 오염될 여지가 있고 제 3자 가 또 다른사람에게 코드를 넘길때 , 주석이 온전히 존재하고 있을까?)

여차 하면 오리무중이 될수 있다.

또 한가지 문제 상황이 생긴다. 바로 Event 타입 상수 이다. 보통 이벤트를 이렇게 작성한다.
class SomeEvent :Event
{
    public static const EventType : String = "SomeEvent.EventType"
    public SomeEvent (type:String, ..(생략)..){...}
}

와 같이 작성하고 ,

dispatchEvent( new SomeEvent( SomeEvent.EventType ));

처럼 이벤트를 발생시킨다.

만약 SomeEvent 에 종전과 같은 방식으로 ENUMStr 를 작성 한다고 생각해보자.

class SomeEvent :Event
{
    static const ENUMStr : String = "ENUM_STRING";
    public static const EventType : String = "SomeEvent.EventType"   
    public SomeEvent (type:String, ..(생략)..){...}
}

그리고 이벤트를 발생(dispatchEvent) 시키고 받을때(addEventListener)를 생각해 보면
아마 혼동이 팍! 올것이다.

dispatchEvent( new SomeEvent( SomeEvent.ENUMStr )); //??
dispatchEvent( new SomeEvent( SomeEvent.EventType)); //??


addEventListener(SomeEvent.ENUMStr , func ) //??
addEventListener(SomeEvent.EventType, func ) //??



참.. 생각하기도 싫은 상황이다. 이것을 위해 이벤트의 코드 힌트를 보고 인간적으로 이해를 해야 하는가?
예를 들어 "EventType 이라고 적어 놓았으니 , Event 상수겠지..." 이런 생각은 물론 거의 대부분 맞다. 하지만
어디까지나 예상일뿐 명확하지는 않다.


그래서 이러한 상황을 타계 하고자 다른 언어에서 존재하는 가벼운 Enum 타입이 필요 하다.


원문 : http://scottbilas.com/blog/faking-enums-in-as3/
 
package jjongun.devUtil.enum
{
    import flash.utils.describeType;

    public class EnumUtil
    {
        public static function InitEnumConstants(inType : *):void
        {
            var type : XML = describeType(inType);
            
            for each(var constant : XML in type.constant)
            {
                inType[constant.@name].text = constant.@name;
            }
        }
    }
}


추상 클래스가 필요하다.
 
package jjongun.devUtil.enum
{
    public class AbsEnum
    {
        public var text :String;
        public function AbsEnum(ChildClass :Class)
        {
            EnumUtil.InitEnumConstants(ChildClass);
        }
    }
}



실제 ENUM을 구현하는 클래스 이다. 여기서 바로 ENUM을 선언하여 사용한다.
 
package
{
    import jjongun.devUtil.enum.AbsEnum;

    public class EnumTEST extends AbsEnum
    {
        public static const INIT : EnumTEST = new EnumTEST();
        public static const ENUMTEST : EnumTEST = new EnumTEST();
        
        public function EnumTEST()
        {
            super(EnumTEST);
        }
    }
}


실제 사용이다. 따로 new 키워드를 사용할 필요 없이 여느 enum 과 같은 형태로 사용이 가능하다.
 
        public function TESTCLASS()
        {
                        
            testEnum(EnumTEST.ENUMTEST);
        }
        public function testEnum(type :EnumTEST):void
        {
            if(type == EnumTEST.ENUMTEST)
            {
                trace("ok!" , type);
            }
        }


Yamecoder 야매코더_
AS3 2011.10.15 23:37

[AIR3] Setup in FB4.5




드디어 AIR3 이 나오고 Away3d 4.0 을 테스트 하기 위한 셋업 방법을 알아보자.

환경은 Flash Builder 4.5 이다.

우선 AIR3 SDK 가 필요 하다. ( http://www.adobe.com/special/products/air/sdk/ )
그리고 flex 4.5 sdk 도 필요 한데, adobe open source 에서 구하거나 혹은
C:\Program Files\Adobe\Adobe Flash Builder 4.5\sdks
에서 얻을수도 있다.

방법은 기존의 4.5 sdk 의 사본을 만들고 그 위에다가  AIR3 sdk 를 덮으면 된다.

그러면 된다....


위에는 Away4 의 status .. 찍은 화면이다. 정상적으로 돌고 있다..

그리고 컴파일 옵션에 -swf-version=13   를 해야한다

const op : NativeWindowInitOptions = new NativeWindowInitOptions();
op.renderMode = NativeWindowRenderMode.DIRECT;

으로 GPU 모드를 제어 할수 있고 ,

**-app.xml 에서 (디스크립터)

 <!-- The render mode for the app (either auto, cpu, or gpu). Optional. Mobile only. Default auto -->

        <renderMode>gpu</renderMode>

를 하면 된다.


Yamecoder 야매코더_
AS3 2011.10.12 11:36

[SimpleFileWriter] SimpleFileWriter를 이용한 파일레퍼런스 사용법


심플파일라이터 바로가기

 
private var fr:FileReference = new FileReference();
        protected function ready(event:Event):void
        {
            stage.displayState = StageDisplayState.FULL_SCREEN;
            stage.addEventListener(MouseEvent.CLICK , click);
            fr.addEventListener(Event.SELECT , selectItem);
        }
        
        private function click(e:MouseEvent):void
        {
            fr.browse();
        }
        
        protected function selectItem(event:Event):void
        {
            stage.displayState = StageDisplayState.FULL_SCREEN;
            var target : FileReference = event.currentTarget as FileReference;
            target.load();
            target.addEventListener(Event.COMPLETE , complete);
        }
        
        protected function complete(event:Event):void
        {
            var target : FileReference = event.currentTarget as FileReference;
            
            //target.data 가 바로 선택된 파일의 바이트 이다.
            //이것을 SimpleFileWriter로 바로 기록한다.
            file_Socket_Server.getInstance().writeFile("c:/testtest.jpg" , target.data);
        }


Yamecoder 야매코더_
AS3 2011.04.28 15:00

[Molehill + AWAY3D] Hello Cube!


드디어 ! Molehill을 돌려봤다 생각보다 간단했다.

물론 Flash Builder 최신버전인 Burrito 에 서 테스트를 하였다 .

바로가기

튜토리얼을 돌리기 위해 몇가지가 필요한데

1.
우선 정식버전이 나오기 전까지 FlashPlayer11 인큐베이터 버전을 사용하자
http://labs.adobe.com/downloads/flashplatformruntimes_incubator.html


2.
flex4.5 Hero Sdk 가 필요하다.
http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+Hero
아래의 표시대로 4.5.19786 버전이 필요하다.


3.Syntex를 잡기위한 새로운 swc
http://download.macromedia.com/pub/labs/flashplatformruntimes/incubator/flashplayer_inc_playerglobal_022711.swc



4. Away3d 패치




위의 파일들을 죄다 모아 놓고 조립을 하면된다.

조립은 아래의 그림에 설명되어 있다.


기본적인 4.5.19786 버전을 토대로 해당 경로에 파일들을 복사하여 넣거나 덮어 쓴다.
away3d 패치는 압축을 풀어 sdk 최상단 폴더에 덮는다.



완료가 되었다면 이제 Molehill sdk 가 완성되었다!


그렇타면 플래시 빌더에서 sdk 를 잡고 간단한 코딩을 해보자!


코드는 사실 볼것도 없이 간단 명료하다.

 
package
{
    import away3d.containers.View3D;
    import away3d.materials.ColorMaterial;
    import away3d.primitives.Cube;
    
    import flash.display.Sprite;
    import flash.events.Event;
    
    public class testMH extends Sprite
    {
        private var view : View3D
        private var cube : Cube;
        
        public function testMH()
        {
            view = new View3D();
            addChild(view);
            var matt : ColorMaterial = new ColorMaterial(0xcc );
            cube = new Cube(matt);
            view.scene.addChild(cube);
            addEventListener(Event.ENTER_FRAME , en);
        }
        
        protected function en(event:Event):void
        {
            cube.rotationY += 10;
            view.render();
        }
    }
}


아직 exe 플레이어가 나오기 전이기 때문에 브라우져 상에서 디버깅을 해야 한다.
결과는 아래처럼 나온다면 성공이다.

이제 쫌 본격적으로 GPU를 물려 볼때가 왔다.( XNA 는 어쩔까 = = ;;;; )



Yamecoder 야매코더_
AS3 2011.03.31 14:12

[StageVideo Test] StageVideoEvent = accelerated 를 위한 조건



사실 10.2 버전이 출시 되자 마자 테스트를 했다 . 하지만 StageVideoEvent 는 software 라고 떠버리고 , 그냥 그때 생각에는 아직 완벽하지 않은가 했다.

그러던 와중 고해상도 영상을 다룰 일이 있어서 다시 보았는데 오창훈님 포스팅에서도 하드웨어 렌더링이 안되었다.
그래서 주변에 여러 분들께 테스트를 부탁하였고, 역시나 요번에도 히카님이 답을 주셨다 . 아주 간단하게 ..
답은 .. 내 그래픽카드가 구린거 였다.  = = ;;

먼저 사양부터 확인했어야 하였다 . 내가 바보였다. 당시 즤포스8600을 쓰고 있었는데, 이렇게 옛날꺼인지 몰랐다.
그때 당시만 해도 8800 은 최고 , 8600은 비교적 괜찮음,, 이라는 평이 었는데 세월이 참 빠르다.. 어찌되었든
그래픽카드가 Dx11 을 지원해야 하는것으로 보인다.

샘플코드는 아래의 오창훈님 포스팅으로 테스트하였고 로컬 exe 플레이어 에서도 정상적으로 가속 됨을 보였다.

http://lovedev.tistory.com/619 



현재 그래핔 카드는 즤포스GT240 이다.
위의 스샷대로 정상적으로 가속됨을 보인다.




지금 생각해보면 감을 못잡은 이유가 Molehill 이 즤포스8600 에서 무난히 돌아 갔기 때문에 당연히 같은 GPU렌더링
원리인 StageVideo 도 가속이 될꺼라 생각했다.
Molehill 은 Dx9 이라고 얼핏 본것도 있다.

참 .. 그래핔 카드가 구려서 안되었었다니... 그리고 맥북에서는 잘돌아가더라..

물론 관련 포스트를 이걸로 처음 보시는 분은 없겠지만 ..
관련 소개 링크 이다.
지돌스타 : http://blog.jidolstar.com/743
adobeLab : http://labs.adobe.com/technologies/flashplayer10/live-player/
gotoAndLearn : http://gotoandlearn.com/play.php?id=134
대략소개(hazbola) : http://hazbola.tistory.com/222


아 .. 추가로 ..

FDT로 환경을 맞추다가 머리털 많이 빠졌다. 그냥 요번엔 플래시 빌더로 했다.빌더는 알아서 구하기...

Yamecoder 야매코더_
AS3 2011.03.31 11:17

[FlashPlayer11 ] Molehill




우선 ..
http://labs.adobe.com/downloads/flashplatformruntimes_incubator.html
로 가서
Download active-x for Windows — for Internet Explorer only (EXE, 3.5 MB)
를 설치한다 .


나중에 언인스톨은
  1. Download the Flash Player Incubator uninstaller for Windows


로 한다..
그다음 ..

http://www.ringo.nl/projects/away3d/broomstick/LoaderOBJTest.html
http://infiniteturtles.co.uk/projects/away3d/broomstick/ShallowWaterDemo.html
기타 등등..

http://www.away3d.com/
에 가면 데모들이 있다..

http://blog.theflashblog.com/?p=2607
여긴 더 많다 .

플래시에도 GPU의 시대가 왔다.


Yamecoder 야매코더_
AS3 2011.03.09 11:45

[Diebuster -> Non blocking loop] 과제 답변



@ 위에 그림은 제가 브라우져를 확대하다가 우연히 발견하였습니다 ( ㅋ ) 이벤트라도 걸어 놓으신거 아닌지..




@과제 : 
  
  1. non blocking loop가 완료될 때 완료이벤트를 수신할 수 있도록 개선하시오.
  2. 아예 Shape를 상속하도록 개선하시오.
  3. 일반화시켜 클래스로 정리하는 포스팅을 한 건 처음이지만 non blocking에 대해서는 이미 두어 개의 포스트가 블로그 내에 존재하니 찾아보세요.




@답안


*1. , 2. :


Created with colorer-take5 library. Type 'actionscript'

package
{
    import flash.display.Sprite;
    import flash.text.TextField;
    
    public class testE extends Sprite
    {
        public function testE()
        {
            //텍스트필드 한개 생성
            addChild( new TextField() );
            
            //nonBlockingLoop 생성
            var looper:nonBlockingLoop = new nonBlockingLoop();
            
            //nonBlockingLoop 실행
            looper.loop(999 , 10 , Do ,["count : " , " #"] , complete);
        }
        
        //loop target 메소드
        private var testCount : int = 0;
        private function Do($str : String , $str2 : String):void
        {
            TextField(getChildAt(0)).text = $str + testCount + $str2;
            ++testCount;
        }
        
        //완료시 콜백!
        private function complete():void
        {
            TextField(getChildAt(0)).text = "comp!";
        }
    }
}


import flash.display.Shape;
import flash.events.Event;

//Shape 을 상속 [과제2] 
class nonBlockingLoop extends Shape
{
    private var  _this : nonBlockingLoop;
    
    //** 변경된 내용 : 기존의 ...$param을  Array 형태로 전환하여 후자에 인자값을 더 받을수 있게 하였다
    //** $completeCallBack 을 만들어 루프 완료시 신호를 전달하게 하였다.
    //** 인자 기본값을 = null 로 하여 필요없을때는 비워두도록 하였다.
    public function loop( $counter : int , $limit : int , $runner:Function , 
                          $param : Array = null , 
                          $completeCallBack : Function = null):void
    {
        var counter : int = 0;
        
        //상속된 Shape 의 참조를 유지하기 위해
        _this = this;
        _this.addEventListener(Event.ENTER_FRAME , 
            function(e:Event):void
            {
                var i : int = 0;
                while( i++ < $limit)
                {
                    if(counter < $counter)
                    {
                        //$param 의 null 검사 추가
                        if($param != null && $param.length)
                        {
                            $runner.apply( null , $param);
                        }else{
                            $runner();
                        }
                        ++counter;
                    }else{
                        
                        //완료시.. 콜백호출[과제1] 
                        if($completeCallBack != null)
                            $completeCallBack();
                        _this.removeEventListener(e.type , arguments.callee );
                        break;
                    }
                }
            }
        );
    }
}


*3. : 
http://www.diebuster.com/?s=%EB%A3%A8%ED%94%84&x=0&y=0#/?p=1559






** p.s

nonBlockingLoop 클래스 의 인자값 , [ $counter : int , $limit : int ] 를 좀더 편리하게 바꾸어 실제 연산되는 양을 직접적으로 기입할수 있게
한다면 경우에 따라 사용성이 훨씬 높아 질것 같다는 생각을 했습니다.

기능추가를 위해 루프안에다가 제어문의 내용을 늘리면 퍼포면스 영향이 약간 걱정되기도 합니다.

테스트 루프 기능을 추가하여, 몇번루프를 돌릴면서 시간차를 체크하면 , 해당 클라이언트의 컴퓨터 속도를 
도출할수 있어 루프의 연산 밀도를 조절할수 있을것도 같습니다.
Yamecoder 야매코더_
AS3 2011.02.10 10:37

[javascript] 자바스크립트 메소드를 AS3 에서 작성 / 호출 하기

package
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.external.ExternalInterface;
    import flash.text.TextField;
   
    public class testJS extends Sprite
    {
        public function testJS()
        {
            /*
            *@author jjongun
            */

           
            //javascript in XML class
            var script : XML = <script>
                <![CDATA[
                    function javascriptMethodinAS3()
                    {
                        alert("TEST!!");
                        window.moveBy(200,10);
                    }
                ]]>
            </script>;
           
           
           
            //call javascript
            var bt : Sprite = new Sprite();
            bt.addEventListener(MouseEvent.CLICK , function(e:MouseEvent):void{
                ExternalInterface.call(script);
            });
           
           
           
            //draw graphic
            bt.graphics.beginFill(0xcc);
            bt.graphics.drawCircle(100,100,50);
            addChild(bt);
           
        }
    }
}
현제 FDT에서는 syntex 에러;; FlashBuilder에서는 잘됨

//참고;
            var str : String = "<script><![CDATA[function call(){alert('"+this.toString()+"')}]]></script>";
            var xml2 : XML = new XML(str);
            ExternalInterface.call(xml2);
Yamecoder 야매코더_
AS3 2010.12.17 14:43

[WonderFL] Tenorion using QuickBox2D

http://wonderfl.net/c/pMYM

 

image

Yamecoder 야매코더_
AS3 2010.12.07 09:53

간단한 비율을 유지한체 크기를 바꾸는 로직 (ResizeEvent)


간단한 비율을 유지한체 크기를 바꾸는 로직 (ResizeEvent)






그냥 피드를 남길것 까진 없지만 ... 그래도 어쩌다가 혹시 나 갑자기 머리가 안돌아 갈수 있을까봐
남긴다 (이 글을 썼다는 자체를 까먹을수도 있을것 같다. ㅡ,.ㅡ)



var _canvas:Canvas = new Canvas  // 캔버스 를 바탕으로..~

var vid:Video = new Video(640,480)
_canvas.addEventListener(ResizeEvent.RESIZE , resizer)
function resizer(e:ResizeEvent):void
{
    var WID:int = e.currentTarget.width
    var HEI:int = e.currentTarget.Height
    var scale:Number = 640 / 480        // 원하는 화면비율 
    
    if(WID > HEI * scale)
    {
        vid.height = HEI
        vid.width = HEI * scale        
    }else{
        vid.with = WID
        vid.height = WID * 1/scale
    }
}
Yamecoder 야매코더_
AS3 2010.12.04 03:54

[Tweensy] 방사체 만들기





               var bml:BitmapLayer = new BitmapLayer(stage.stageWidth , stage.stageHeight)
               bml.add(new FilterEffect(new BlurFilter(5,5)))
               bml.add(new ColorEffect(new ColorTransform(1,1,1,0.9)))
               var emitter:Emitter = new Emitter(SampleClass,{scaleX:0 , scaleY:0},4,50,"0,360","100,50")
               bml.draw(emitter.holder)          

               stage.addChild(bml)
              
               emitter.blendMode = BlendMode.OVERLAY
              
               addEventListener(Event.ENTER_FRAME , en)

               function en(e:Event):void
               {
                    emitter.x += (stage.mouseX - emitter.x)/4
                    emitter.y += (stage.mouseY - emitter.y)/4
               }


//SampleClass 는 보통 클래스에서 Graphic을 extends 하여 간단한 원을 만들었고 그것을
instance를 만들지 않고 Static 으로  바로 불렀다



Yamecoder 야매코더_
AS3 2010.12.04 03:54

[ getDefinitionByName ] String 으로 Class 참조

[ getDefinitionByName ] String 으로 Class 참조



import SomePackage.SomeClass;

/****/

private var someInstance:SomeClass

/****/

var getClass:Class = getDefinitionByName("SomePackage.SomeClass") as Class;

/****/

new getClass( someArg1 ... );

Yamecoder 야매코더_
AS3 2010.12.04 03:50

[64Bit FlashPlayer 10.1] flash player 64비트 브라우져별 테스트



테스트 컴퓨터 :  new MacBook (intel2.4G / 2GB RAM) 
( http://www.apple.com/kr/macbook/specs.html )


테스트 운영체제
MAC osX 10.6.4 [ 사파리( x64/ x86) ,                 FireFox4 Beta( x86 ) ,  MineField(Firefox x64)]
Windows7         [ ie8 (x64/ x86) , ie9(x64/ x86) , FireFox4 Beta( x86 ) ,  MineField(Firefox x64)]



첫번째 화면  :  wonderfl ( http://wonderfl.net/c/wX0O ) // CPU 연산속도를 체크
두번째 화면 : youtube hd 영상 ( https://www.youtube.com/results?search_query=hd ) // 픽셀벤더 (GPU지원) 을 체크 





[MacOsX snow leopard]

32bit safari

"
32비트 hd 테스트 : :
분명 FP10.1 64비트 버젼을 지웠음에도 불구 하고 64로 프로세스가 잡혀 안타깝게 패스
"

64bit safari
사파리에서는 성능차이가 확연했다. 물론 화면에는 64비트가 시피유 점유율이 높지만 퍼포먼스는 64비트 쪽이 좋았다.
영상은 그리 차이는 없었다.








32bit Firefox



64bit Firefox

맥OS 에서 Firefox 자체가 느렸음 ( 플래시의 fps 체크는 브라우져 안에서는 믿을만 하지 못함을 확인 ),
사파리 만큼 속도의 차이는 없지만 64비트가 조금 빠른 느낌이었다. 확실히 사파리보다 느리다.
백그라운드도 그리 쾌적하지 않았다. 무리한 연산 수행시 주소창을 클릭하면 반응이 상당히 느렸다.





[Windows7]

32bit ie8




64bit ie8


확실히 64비트 쪽이 빨랐다.
무리한 연산에도 불구하고 백그라운드는 쾌적했다.





32bit ie9




64bit ie9

아직 베타여서 그런지 ie8 보다 조금 떨어지는듯 하다. 32비트에서는 그럭저럭 잘 움직였지만
64비트에서는 그리 쾌적하지 않은 움직임을 보였다.







32bit Firefox



64bit Firefox




역시나 윈도우에서도 무리한 연산 수행시 백그라운드의 반응이 느렸고 64비트가 좀더 느렸다.








나름대로 통계를 만들어 볼려고는 했지만 수치상의 특이사항은 그리 뚜렸하지 않았지만
64비트쪽이 메모리를 좀더 점유하는것 같다.

파이어폭스를 제외한 거의 모든 결과에서는 64비트에서 쪼금 더 좋은 움직임을 보였다.


또한 특이사항은 윈도우에서 FlashUtil 이라는 프로세스가 잡혀있지만 직접적인 개입은 하지 않는것같다.
파이폭스나 사파리는 플러그인들이 처리하는 프로세스를 따로 관리하고 있었다.



다음에는 64비트에서 가비지 컬랙션에 대해 테스트해볼 생각..
Yamecoder 야매코더_
AS3 2010.12.04 03:45

SimpleCam

SimpleCam
그냥 웹캠 캡춰만 하는 심플웨어 이다.

상단의 캡춰 버튼을 누루면 순차적으로 바탕화면에 jpg로 저장된다.

jpg코덱이 궁금하다면,.
http://scripter.egloos.com/1457477
에 예전에 포스팅 했더랬다.

(막상 ..햇갈려서 구글링하니, 내 블로그가 걸리는 ㅡㅡ;;...) 
(그리고 참... 캠, 구리다,.. )






다운로드 : SimpleCapture.air



AIR1.5 가 없다면.. http://get.adobe.com/kr/air/?promoid=BUIGQ
Yamecoder 야매코더_
AS3 2010.12.04 03:33

[BitmapData의 갱신]

[BitmapData의 갱신]



비트맵데이터를 실시간으로 갱신하고 메모리 사용량을  trace 한것이다.

보는것처럼 메모리양은 평균수준을 지킨다. 따라서 메모리에대한 스트레스는 그리 갖지 않아도 될듯하다.

다음은 테스트 코드 이다.test2.mxml
Yamecoder 야매코더_
AS3 2010.12.04 03:32

[적외선 카메라 만들기] 로지텍 퀵캠(울트라 비전)Ultra Vision

[적외선 카메라 만들기] 로지텍 퀵캠(울트라 비전)Ultra Vision










먼저 t9t9.com 에게 감사^^; 


일반 웹캠을 가지고  적외선 카메라로 만들어 보겠다.

꼬박 반나절 걸렸다. 이것저것 사모은다고.. 

우선 사용한 캠은 로지텍의 울트라 비전이다.




비싸다. 그러니 싼거 해도 된다. 근데 꼭 반드시 빠르고 안전하게 하겠다는 분은

안말린다.

우선 뜯어야 했다.



이건 컬러네가티브 필름(보통 필름)의 태운? 부분이다. 사진관 아저씨가 이부분을 태운 부분이라고 하더라.

그냥 사진관 가서 구걸? 하거나 아니면 집에 하나씩을 있을것 같은.. 필름조각들의

끝트머리 를 보라 이와 같은 색갈의 부분이 있는데 이것을 준비 하자. 

가장 중요한 네거티브 필름 이다.



분해를 하자 ~ 그냥 상식대로 조금 과감히 껍데기 뜯고 나사 있는데로 풀면 이와 비슷한 화면이

나오리라.. 너무 쎄게 하진 말자 절대 AS는 안된다.



그리고 이제 부터 정신차려야 한다. 위의 렌즈 부분을 이탈 시켜야 한다.

위의 모습에서 뒤집으면 나사가 있다. 풀자!



이렇게 이쁜 모양이 된다. 여기서 보면 사각형의 렌즈가 보이는데 이것이 

바로 가시광선 필름이다. 

존재하는 여러 광선중에 가시광선만 필터링하여 사람의 눈에서 보는것과 같은 색상

을 만들어 주는 부분인데 우리의 목적을 위해서는 과감히 제거해야 한다.


이것처럼 테이프를 가시광선 필터 전면에 붙인후 파괴하면 파편이 튀는것을 방지 할수 있다.

과감히 , 조심히, 깨자! 




깨고 .. 파편을 정리하자.. 


 크기에 맞게 잘라서 가시광선 필터 대신 네거티브 필름으로 교체한다.

그리고 반대로 조립하면 된다.

!! 근데!! 렌즈 부분만 일단 조립하자! 

이유는 성능 시험을 해야 한다.

이제 성능시험을 하자!

간단한 어플을 돌린다. 없다면 첨부파일 을 다운받자 본인이 아주 간단한 어플을 만들었다.




본인은 처음에 촛점이 안맞아서 렌즈부분을 좌우로 돌려서 촛점을 맞추었다.

본인은 이것저것 건들여서 그런것이니 너무 신경 안써도 된다.

만약 안맞으면 


요런식으로 촛점을 맞추면 되겠다.




자.. 

이제 본격적으로 적외선 LED를 시험해보자!!



이것은 보통 가시광선 카메라에서 잡은 적외선 불빛, 그렇다면 방금 제작한 캠에서는....


X나 밝다.. 눈이 부신다. 이렇게 밝은것!!을.. 

참고로 중간쯤 사용한 건전지에 적외선LED개의 불빛이다.

정말.. 인간의 눈으로는 느끼지 못했던 빛이다.

좀더 응용해보자!

이 밝은 불빛을 이용해 사용자 제스쳐를 인식시키위해 손으로 반사 해보았다


그리고 이것만으로 의미가 없다.. .  에랏!!! 이진화!!!!!


이제 이것을 비트맵으로 찍어서 컬러를 분리한다음..  위치를 선별하여 포인팅을 

한다면.. 뭐.. 그다음은 여러분의 상상하기 나름.. 

멀티터치 ?? 여기까진.. 그리 대단한건 아니다.. ~  



역시나 뭐든 컨텐츠가 좋아야.. 한다. 


Yamecoder 야매코더_
AS3 2010.12.04 03:31

[MVC for AS3] 세상에서 가장 알기쉬운 MVC 구조



동그라미는 MVC 클래스 구조를 나타낸것이고 스마일은 사용자를 나타냄.
동그라미 위의 흰 글씨는 제공된 예제파일을 나타냄.
동그라미 아래의 주황글씨는 대략적인 작성원리를 나타냄.
동그라미 안의 보라색 글씨는 각각의 역할을 나타냄

헤드퍼스트 디자인 페턴에 소개되었던 MVC를 as3 용으로 바꾼것입니다
원문에서는 옵저버패턴을 사용하여 상태변화를 다른객체에서 감지 하였으나
as3의 주 무기? 인 이벤트리스너를 사용하여 그것을 대체하였습니다.
또한 비트에 맞추어 소리를 내는 대신 버튼이 깜빡이는것으로 대체하였습니다.


예제 : MVC_test.rar

예제는 flex4 sdk 로 제작하였습니다. flex3 사용자는 컴포넌트를 변경하시면 빌드가 가능합니다
( 요청이 있을경우 flex3 으로 변경하여 올리겠습니다)


요청이 있어서  flex3 버젼으로 올립니다

MVC_flex3.zip


  • 김용환 2009/09/23 12:46 # 삭제 답글

    잘봤습니다^^ 그런데 제가 플렉스4가 아니라 3버전이라서요...^^;;

    컨버팅좀 해주셔서 주시면 안되나요??^^;;
  • superSC 2009/09/24 13:21 # 삭제 답글

    네! 올렸습니다. !
  • allieus 2009/12/29 12:24 # 삭제 답글

    좋은 글 감사합니다. 많은 도움이 되었습니다. :-)
  • 댓글 입력 영역
    Yamecoder 야매코더_
    AS3 2010.12.04 03:31

    [Flex4 , Flash Builder] addChild 가 없다니!!



    사실 플래시 빌더가 나오자 마자 테스트를 할려고 따운받고 실행하는 순간

    시리얼 넣으란다.. 베타에 시리얼이 왠말..일까..

    그래서 찝찝해서 안하고 있다가 Flex3시리얼 키 있으면 무료로 발송해준다고 하더라.~

    (지돌스타님 블로그 : http://blog.jidolstar.com/542)

    사실 나는 에듀케이션 시리얼을 가지고 있었다 그리고 혹시나 하는 마음에 해보니깐 되더라 참..



    그래서 테스트를 하는데 ,addChild 가 안먹는다. 버그리포팅을 보니

    그냥 에러를 내도록 해놨더라. .. 쓰지 말란거지..

    전반적으로 변화가 있더라~ 예전에 Sprite 를 UiComponent 에 집어넣지 못한점등등

    네이티브 그래픽 클래스들과 컴포넌트간의 상이한 표현을 없에기 위해 만들었다고 하더라

    (지돌스타님 관련글 : http://blog.jidolstar.com/559)

    쉽게 .. spark 컴포넌트 아래에서는 addElement 하면 된다.

    기존의 디스플레이오브젝트의 접미어 ChildElement 로 고치면 해결될듯 하다


    또한 나는 플랙스에서 기본 클래스를 상속할때
     
    extends UIComponent  를 많이 사용하였는데..

    역시나 이러면 spark 를 사용할수 없다.

    그래서extends Group 를 사용하면 스크립트로도 새로운 컴포넌트를 즐길수 있다.
    Yamecoder 야매코더_
    AS3 2010.12.04 03:30

    [FLV] VideoDisplay를 상속한 클래스에서 재생리스트 구현시 다음 영상 playheadTime 문제 잡기



    * extends VideoDisplay ( 상속하여 다음 무비를 source=" "로 로딩한다 )

    상황 : 1. HSlider를 사용하여 영상을 seeking 한다.
             2. 그리고 무비가 끝난다. 곧바로 다음 무비가 로드 된다
             3. 다음 무비는 처음부터 시작하지 않고 HSlider로 seeking 한 시간대로 이동한다.

    이문제를 해결하기 위해서는 2번 상황에서 playheadTime 속성을 초기화 해야 한다.

    ex)

    //상속된 클래스에서 비디오가 끝나는 시점을 캐치 한다
    addEventListener(VideoEvent.COMPLETE , endVideo)
    function endVideo(e:VideoEvent):void
      {
            //시간대 초기화
           playheadTime = 0
           
            //다음 영상 재생
           source =  "nextMov.flv"
      }
    Yamecoder 야매코더_
    AS3 2010.12.04 03:30

    [Loader] for문을 이용한 이미지 로드시 모든 이미지를 로드하지 못하는 버그 잡기




    for 문을 이용해 여러장을 한꺼번에 로드 할경우 카운트를 해보면 성능에 따라 모든 이미지를 로드

     하지 못하는경우가 발생할수 있다. 특히 로컬과 같이 인터넷 속도가 빠른경우 발생할수 있는데

    이를 간단한 재귀함수로 해결할수 있다.

            public function load():void
              {
    // 이미지가 목표수치에 도달하면 재귀를 멈춘다
                   if( matchCount == birdge.Get_imgs().length )
                   {
                        return ;
                   }
                   loadImg(matchCount)
              }

              private function loadImg(length:int):void
              {
                   loader = new Loader
                   loader.load( new URLRequest(birdge.Get_imgs()[length] ) )
                   loader.contentLoaderInfo.addEventListener(Event.COMPLETE , loadComplete)
                   

    // 이미지가 로드 되면 함수를 재 호출 한다
                   function loadComplete(e:Event):void
                   {
                        load()
                        matchCount ++
                        var _bitmap:Bitmap = e.currentTarget.content as Bitmap
                        data[length] = _bitmap.bitmapData
                   }
              }
    Yamecoder 야매코더_
    AS3 2010.12.04 03:29

    [3D Model Loader]디자이너를 위한 3D (DAE , MD2)파일 테스터


    얼마전 만들었던 모델로더를 업그레이드 했다

    MD2 포멧과 MD2 play 기능과 스케일 기능이 추가 되었다.


    테스터 : Test.zip

    3D_LOADER.air

    물론 AIR 가 깔려 있어야 하겠다.
    http://get.adobe.com/kr/air/?promoid=BUIGQ

    Md2 참고
    http://labs.apollocation.co.kr/technologies/papervision/papervision3d.php?menu=1
    Yamecoder 야매코더_
    AS3 2010.12.04 03:26

    [AS3 Code Libraries]


    3D Engines

    3D Game Engines

    3D Animation Framework

    3D Physics Engines

    Animation Tweening Kits

    2D Physics Engines

    Security

    Audio Libraries

    Particle Systems

    Data Visualization

    Loading Kits

    OOP Frameworks

    Other APIs and libraries

    Yamecoder 야매코더_
    AS3 2010.12.04 03:26

    [DAE Loader]디자이너를 위한 DAE 파일 테스터


    Dae_LOADER.air


    디자이너와 프로그래머가 협업시 디자이너가 넘겨준 DAE 파일을 하나하나 프로그래머가 확인해야
    하는데..

    DAE 파일 익스포팅시 옵션도 여러개고 자료를 왔다갔다 하는 시간을 아끼기 위해

    간단한 DAE 테스터를 제작했다.

    사용방법은 그냥 로드 하고 .. 돌려보면 된다


    물론 AIR 가 깔려 있어야 하겠다.
    http://get.adobe.com/kr/air/?promoid=BUIGQ



    Dae_LOADER.air
    Yamecoder 야매코더_
    AS3 2010.12.04 03:25

    UI컴포넌트 안에 Sprite 를 쓰자!!






    Flex 의 UIcomponent 안에 Sprite 객체를 넣지 못하는건 아마 잘 아는 사실일것이다.

    간단한 이유는 Sprite 는 UIcomponent를 상속받지 못했기 때문이다.

    그래서 아래와 같이 사용하는것이 좋을것 같다.

    (그러나 .. 리소스 잡아먹는건 마찮가지다.)
    package
    {

         import flash.display.Sprite;
         import mx.core.UIComponent;

         public class sampleSprite extends UIComponent
         {

              private var sample:Sprite
              public function sampleSprite()
              {

                   super();

                   sample = new Sprite
                   sample.graphics.beginFill(0xffffff)
                   sample.graphics.drawRect(0,0,100,100)
                   sample.graphics.endFill()
              }

              protected override function createChildren():void
              {
                   super.createChildren()
                   this.addChild(sample)
              }

         }

    }


    사용은

    private var sp:Sprite = new sampleSprite

    요런 식으로 하면 된다.
    Yamecoder 야매코더_
    AS3 2010.12.04 03:21
    Powerd by Tistory, designed by criuce
    rss