다양한 종류의 플래시 게임 프레임웍을 소개하고 있다.
http://www.flashrealtime.com/flash-game-library-engine-list/
저작자 표시

'AS3 > 게임' 카테고리의 다른 글

플래시 게임 엔진 라이브러리 리스트  (0) 2011/06/29

Trackback Address :: http://superman.pe.kr/trackback/137 관련글 쓰기

댓글을 달아 주세요



http://www.flashrealtime.com/videotutorial-remote-device-controller/


스마트폰을 움직이면 컴퓨터 모니터에 스마트폰의 방향이 P2P를 통해 전달되는 예제
저작자 표시

'AS3 > 모바일' 카테고리의 다른 글

[모바일] P2P를 통해 모바일 장치와 데스크탑 컨트롤  (0) 2011/06/29

Trackback Address :: http://superman.pe.kr/trackback/136 관련글 쓰기

댓글을 달아 주세요


25.6 fps

30.0 fps




상황 

- 실제 게임에 사용되는 이미지들은 320 x 480 크기에 맞춰 제작됨
- 화면에 그려질때는 3GS일경우 그대로 4일경우 2배로 뻥튀기해서 그려짐


[SWF( width='320', height='480')] 

이와 같은 상황에서 메타태그를 이용해 320 x 480을 해줄경우 fps가 30을 유지해줬다(부드럽다)
하지만 메타 태그를 지정하지 않거나 그 이상의 해상도를 지정해줬을 경우에 fps는 5fps 정도
드롭률을 보인다. 


해상도

이전 포스팅 에서도 적었지만 시뮬레이터의 최초 기본 크기는 500 x 375이다.
이후에 디바이스 별로 각 해상도에 맞춰 변경되어진다.(Resize 이벤트 발생)
최초 500 x 375 -> 디바이스 해상도(3gs는 320x480, 4는 640 x 960 ) 변경 되어지는 과정이 있다.

하지만 메타태그를 이용해 해상도를 320 x 480으로 고정 했을시
최초 320 x 480 -> 디바이스 해상도(3gs는 320x480, 4는 640 x 960 ) 변경 되어 졌다.

그리고 위에 설명했는 부분처럼 fps 더 안정적이고 부드럽게 돌아갔다.
정확한 이유는 모르겠지만 해상도를 지정해주는것이 유리해 보인다. 


저작자 표시

Trackback Address :: http://superman.pe.kr/trackback/128 관련글 쓰기

댓글을 달아 주세요

플래시벌더에서 flex 또는 air의 새로운 버전의 sdk를 설치하는 방법은 아래와 같다.

1. flash builder 설치폴더/sdks/ 폴더로 이동 
2. 다운로드한 flex sdk 또는 air sdk의 압축을 푼다.
3. 1)번의 폴더에서 기존 sdk폴더들(3.5/4.0/4.5)에 덮어 쓰던지 혹은 새롭게 폴더를 만든다.
4. 그리고 압축을 푼 sdk 파일들을 복사해서 기존 sdk 폴더에 덮어쓰거나 새로운 폴더에 붙여넣는다.
5. 플래시빌더에서 프로젝트 속성 -> 컴파일러 -> Configure Flex SDKs에서 새로운 sdk를 선택해준다(덮어쓴경우 상관없음)


※ air sdk 같은 경우는 flex sdk + air sdk 의 구성이 되어야 하므로 새롭게 폴더를 만들경우
    기존 flex sdk폴더를 하나 복사한 후 덮어쓴다.

※ 맥 사용자의 경우 맥을 잘 사용하지 못하는 사람들은 아래와 같은 내용 해야 된다.
     
     윈도우의 덮어쓰기와 맥에서의 대치는 다른 의미이다!!(
주의)
     맥같은 경우 대치를 하게되면 기존 폴더는 지워지고 새로운 폴더로 바뀌는 개념이다.
     그러므로 절대 flex sdk 폴더에 air sdk 폴더를 덮어쓸 경우 대치를 하면 안된다(기존 flex sdk가 사라짐)
     이같은 방법을 해결하기 위해선 터미널에서 커맨드를 입력하든지 기타 응용 프로그램을 사용해야 된다.
     터미널에서의 커맨드 입력방법은 아래와 같다.

cp -rf /Users/DarkCircle/Downloads/AdobeAirSDK/* /"Applications/Adobe Flash Builder 4.5"/sdks/4.5.0_air2.7/

/User/DarkCircle/Downloads/AdobeAirSDK/* -> 다운받은  air sdk 폴더의 전체파일을 의미
/"Applications/Adobe Flash Builder 4.5"/sdks/4.5.0_air2.7/  -> 기존 sdk폴더 또는 새로운 폴더를 의미


->  
"Applications/Adobe Flash Builder 4.5"  커맨드중 이부분은 뛰어쓰기 일경우 " " 로 묶어 줘야 된다.
저작자 표시

Trackback Address :: http://superman.pe.kr/trackback/127 관련글 쓰기

댓글을 달아 주세요

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

하드웨어 가속을 통해 일부 표시 객체 클래스에서 그래픽 성능을 높일 수 있습니다. 다음은 그래픽 성능을 극대화할 수 있는 몇 가지 팁입니다.

  • 스테이지에 표시되는 항목 수를 최대한 줄입니다. 항목마다 렌더링하고 주위의 다른 항목과 합성하는 데 시간이 걸립니다.

    더 이상 표시할 필요가 없는 표시 객체는 visible 속성을 false로 설정하거나 스테이지에서 제거(removeChild())합니다. alpha 속성을 0으로 설정해서는 안 됩니다.

  • 가급적 블렌드 모드를 사용하지 않도록 하고 특히 레이어 블렌드 모드 사용을 피합니다. 가능하면 보통 블렌드 모드를 사용하십시오.

  • 표시 객체 필터는 계산하는 데 리소스가 많이 소모되므로 사용하지 않는 것이 좋습니다. 예를 들어 소개 화면에 필터를 몇 개 사용하는 것은 괜찮지만 많은 수의 객체나 애니메이션이 적용되는 객체, 또는 높은 프레임 속도가 요구되는 경우에 필터를 사용하는 것은 바람직하지 않습니다.

  • 변형 모양을 가급적 사용하지 않습니다.

  • 클리핑을 가급적 사용하지 않습니다.

  • Graphic.beginBitmapFill() 메서드를 호출할 때 가능하면 repeat 매개 변수를 false로 설정합니다.

  • 오버드로우하지 않습니다. 배경색을 배경으로 사용합니다. 큰 모양을 서로 겹치지 않습니다. 그려야 하는 모든 픽셀마다 리소스가 소모됩니다. 이는 하드웨어 가속되지 않는 표시 객체의 경우 특히 그렇습니다.

  • 길고 가늘게 튀어나온 부분이 있거나, 가장자리가 서로 교차하거나, 가장자리를 따라 세부 요소가 많은 모양을 사용하지 않습니다. 이러한 모양은 가장자리가 매끄러운 표시 객체보다 렌더링하는 데 오래 걸립니다. 이는 하드웨어 가속되지 않는 표시 객체의 경우 특히 그렇습니다.

  • 비트맵 크기를 2n x 2m 비트보다 작지만 이 크기에 가깝게 만듭니다. 크기가 반드시 2의 거듭제곱일 필요는 없지만, 2의 거듭제곱을 초과하지 않으면서 2의 거듭제곱에 가까워야 합니다. 예를 들어 31 x 15 픽셀 이미지는 33 x 17 픽셀 이미지보다 빠르게 렌더링됩니다. 31과 15는 2: 32 및 16보다 조금 작습니다. 또한 이러한 이미지는 메모리를 보다 효율적으로 사용합니다.

  • 표시 객체의 크기를 1024 x 1024 픽셀(또는 최신 장치의 경우 2048 x 2048)로 제한합니다.

저작자 표시

Trackback Address :: http://superman.pe.kr/trackback/121 관련글 쓰기

댓글을 달아 주세요

air로 만들어진 아이폰 어플일 경우 어플이 실행되고 최초의 스테이지 가로, 세로값을 체크해보면 아래와 같다.

(왜그런진 알수 없다..초기값인듯..)


stageWidth : 500 , stageHeight : 375
 
혹은 메타태그를 이용해서 다음과 같이 사용자가 임의로 설정할 수 있지만...

 [SWF ( width="640", height="960" )]

곧 Event.RESIZE 이벤트가 발생하면서 가로와 세로값은 각 기종(3gs, 4, iPad )별 
해상도에 맞춰서 강제로 바뀌게 된다.

만약 내가 만드는 어플리케이션이 각 기종별 해상도에 맞춰야 된다면 아래와 같이
RESIZE 이벤트 발생 시점에 가로 세로값을 파악한 후 초기화하면 되겠다.

	public class Main extends FlxGame 
	{
		
		public function Main():void 
		{
			stage.addEventListener( Event.RESIZE, onResize );
		}
		
		protected function onResize(event:Event):void
		{
			stage.removeEventListener( Event.RESIZE, onResize );
			//이곳에서 초기화를 해주면 되겠다.
		}
	}


저작자 표시

Trackback Address :: http://superman.pe.kr/trackback/120 관련글 쓰기

댓글을 달아 주세요

ActionScript 3.0에는 많은 표시 객체 집합이 포함되어 있습니다. 메모리 사용을 제한하기 위한 가장 간단한 최적화 방법 중 하나는 적절한 유형의 표시 객체를 사용하는 것입니다. 대화형이 아닌 간단한 모양의 경우 Shape 객체를 사용하고, 타임라인이 필요하지 않는 대화형 객체의 경우 Sprite 객체를 사용하며, 타임라인을 사용하는 애니메이션의 경우 MovieClip 객체를 사용합니다. 언제나 응용 프로그램에 가장 효율적인 유형의 객체를 선택하십시오.

다음 코드는 여러 가지 표시 객체의 메모리 사용을 보여 줍니다.

trace(getSize(new Shape())); 
// output: 236 
  
trace(getSize(new Sprite())); 
// output: 412 
  
trace(getSize(new MovieClip())); 
// output: 440

getSize() 메서드는 객체가 사용하는 메모리 바이트 수를 보여 줍니다. MovieClip 객체의 기능이 필요하지 않은 경우 단순한 Shape 객체 대신에 여러 MovieClip 객체를 사용하면 메모리가 낭비될 수 있습니다.

저작자 표시

Trackback Address :: http://superman.pe.kr/trackback/119 관련글 쓰기

댓글을 달아 주세요




배포시 "응용 프로그램의 리소스가 수정되었기 때문에 설치되지 않았습니다." 라는 에러가 나올때가 있다.

이미지 혹은 파일명이 잘못되어서 그렇다.

 

한글이나 기호로 시작하는 이미지 파일명이 있으면 안된다. 
영어로 변경해야 된다.  



한글 -> 영문으로 변환
저작자 표시

Trackback Address :: http://superman.pe.kr/trackback/118 관련글 쓰기

댓글을 달아 주세요

  1. 한억까이 2011/06/22 21:11 Address Modify/Delete Reply

    안녕하세요 같은현상으로 고생중인 사람입니다^^;;
    지금 한글로 바뀐 파일을 보고있는 프로그램은 어떻게 구할수있나요...??
    컴맹인 저로서는 정말 머리아프네요 ㅠㅠ 도와주세요... 감사합니다~!!

  2. 한억까이 2011/06/23 08:10 Address Modify/Delete Reply

    네 지금화면상으로 보이는 스샷이 한글로 표기된걸 보게하는 프로그램이 뭔지 알고싶습니다.
    어제도 새벽2시까지 헤메다가 자버렸는데...
    사용법이 어렵나요 일단 플래쉬 빌더 저걸한번 받아봐야겠네요..
    참 애플은 다좋은데 에러시 대처할수있는 전문인이 별로없는것 같네요 ㅠㅠ

Flash Builder 4.5 ActionScript Mobile Project의 동영상 자료

플래시빌더 4.5 에서 Actionscript Mobile Project를 이용해 아이폰에서 터치이벤트를 활용한 예제
package
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.TouchEvent;
	import flash.text.TextField;
	import flash.text.TextFieldAutoSize;
	import flash.text.TextFormat;
	import flash.ui.Multitouch;
	import flash.ui.MultitouchInputMode;
	
	[SWF (backgroundColor="#cccccc", frameRate="60" ) ]
	public class MultiTouchTest extends Sprite
	{
		private var spots:Array;

		private var tf:TextField;
		public function MultiTouchTest()
		{
			super();
			
			// support autoOrients
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			setTextField();
			
			if ( Multitouch.supportsTouchEvents )
			{
				init();
			}else
			{
				tf.text = "no support multitouch";
			}
		}
		
		private function setTextField():void
		{
			
			tf = new TextField();
			tf.autoSize = TextFieldAutoSize.LEFT;
			tf.text = "hello";
			tf.multiline = true;
			addChild ( tf );
			
			var textFormat:TextFormat = new TextFormat(null, 20 );
			tf.setTextFormat( textFormat );
		}
		
		private function init():void
		{
			Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
			
			stage.addEventListener(TouchEvent.TOUCH_BEGIN, touchEventHandler );
			stage.addEventListener(TouchEvent.TOUCH_END, touchEventHandler );
			
			spots = [];
		}
		
		protected function touchEventHandler(event:TouchEvent):void
		{
			var spot:Sprite;
			tf.appendText( event.type + "\n" );
			tf.appendText( event.touchPointID.toString() + "\n" );
			
			
			if ( event.type == "touchBegin" )
			{
				spot = getCircle();
				spot.x = event.stageX;
				spot.y = event.stageY;
				spot.startTouchDrag( event.touchPointID, true );
				this.stage.addChild( spot );
				
				spots[event.touchPointID] = spot;
			} else {
				
				spot = this.spots[event.touchPointID];
				this.stage.removeChild(spot);
				
				delete this.spots[event.touchPointID];
			}
			
		}
		
		private function getCircle( circ:uint = 60 ):Sprite
		{
			var sprite:Sprite = new Sprite();
			sprite.graphics.beginFill( Math.random() * 0xffffff);
			sprite.graphics.drawCircle( 0, 0, circ );
			
			
			return sprite;
		}
	}
}


Multitouch with TouchPoints 


플래시 빌더 4.5 모바일 프로젝트에 관련해서 도움을 얻을 수 있는 사이트
http://www.tutorialsbyibrent.com/

해당 사이트에 있는 소스들

저작자 표시

Trackback Address :: http://superman.pe.kr/trackback/117 관련글 쓰기

댓글을 달아 주세요