'as3.0'에 해당되는 글 42건
- [2008/10/19] Price Effect :: 가격 카운팅 효과
- [2008/05/15] as 3.0 IPOD Rotation Scroll System (1)
- [2008/05/14] as 3.0 RotateTo Class
- [2008/05/12] as 3.0 귀찮은 import 키워드. (9)
- [2008/05/01] AS3.0 3D Engine: Alternativa Platform
- [2008/01/29] AS3.0 WOW-ENGINE (10)
- [2007/09/04] Error: Error #1502: 스크립트 실행 시간이 기본 제한 시간인 15초를 초과했습니다. (15)
- [2007/08/23] 요즘의 나 그리고 몸 (13)
- [2007/08/06] AS3.0 :: caurina tweener easing sample (19)
- [2007/08/04] AS3.0 :: caurina tweener (13)
클래스를 만들다 중간에 잘못 만들어 다시 만들어야 하는 상황이 되었다. 만약 지금이 실작업이였다면 눈물방울 하나가 뚝 하고 떨어져내렸을 것이다. 내가 포인트 모션을 넣을려다 잘못 만들었다는 판단을 내렸다. 아우... 다시 클래스만들어서 올려야지. 우선 swf만 올리고 소스는 다시 수정해서 올려야 겠다.
업그레이드 할려니깐 오류가 참 많이 나는군... 기초를 좀 더 다져야 겠는걸... 흠~
## Color 변환 프로그램은 우야꼬(윤진상)님의 ASDecorator air 파일로 변환함.
## Document Class
- FileName : RotationSystem.as
package
{
// 내장 클래스
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Stage;
//
import flash.events.MouseEvent;
// 외장 클래스
import jin_u.display.RotateTo;
//
public class RotateToSystem extends Sprite
{
private var poleMC:MovieClip;
//
public function RotateToSystem ():void
{
trace ("## RotateToSystem constructor");
//
initialize ();
}
private function initialize ():void
{
trace ("## RotateToSystem initialize()");
//
poleMC=new Pole() ;
poleMC.name="poleMC";
poleMC.x=stage.stageWidth / 2;
poleMC.y=stage.stageHeight / 2;
addChild (poleMC);
//
setListener ();
}
private function setListener ():void
{
stage.addEventListener (MouseEvent.CLICK,onClick);
}
private function onClick (e:MouseEvent):void
{
RotateTo.rotateToPos (poleMC,mouseX,mouseY,0.2);
}
}
}
- FileName : jin_u.display.RotateTo .as
package jin_u.display
{
import flash.display.DisplayObject;
//
import flash.events.Event;
//
public class RotateTo
{
private static var tMC:DisplayObject;
//
private static var tX:Number;
private static var tY:Number;
private static var dX:Number;
private static var dY:Number;
private static var kP:Number;
private static var dR:Number;
private static var sP:Number;
private static var nR:Number;
private static var oR:Number;
//
public function RotateTo ():void
{
trace ("## RotateTo constructor");
}
public static function rotateToPos (tmc:DisplayObject=null,targetX:Number=0,targetY:Number=0,targetSp:Number=0):void
{
tMC = tmc;
tX = targetX;
tY = targetY;
sP = targetSp;
//
setListener ();
}
private static function setListener ():void
{
tMC.addEventListener (Event.ENTER_FRAME, onEF);
}
private static function onEF (e:Event):void
{
dX=tMC.x - tX;
dY=tMC.y - tY;
kP=Math.atan2(dY,dX) / Math.PI * 180;
//거리를 계산하여 x값을 rotation값으로 변환시킨다.
dR=kP - tMC.rotation;
//0 과 -180 을 지날때 변경 시킨다
if (Math.abs(dR) > 180)
{
dR=360 - Math.abs(kP - tMC.rotation);
if (tMC.rotation < 0)
{
tMC.rotation=tMC.rotation - dR * sP;
}
else if (tMC.rotation > 0)
{
tMC.rotation=tMC.rotation + dR * sP;
}
}
else
{
//0 과 180 을 지날때는 그냥 대입한다
tMC.rotation=tMC.rotation + dR * sP;
}
nR = tMC.rotation;
// 현재 로테이션과 이전의 로테이션이 같다면 리스터를 삭제함.
if (nR == oR)
{
destroy ();
}
oR = nR;
}
private static function destroy ():void
{
tMC.removeEventListener (Event.ENTER_FRAME, onEF);
}
}
}
class를 공부하다가 항상 import를 써서 사용(Java, C)을 하지 않으면 절대경로로 접근하던가 해야 하는데 난 이것을 한군데서 받을 수 없을까를 고민해 봤다.
일반적으로 타임라인(Timeline)에서 작업을 하면 바로 사용할 수는 있지만, 자신이 만든 class는 import를 하지 않은 이상 아니면, Preference > Language > Actionscript 3.0 Settings 또는 class 상에서 절대경로로 위치를 잡아주지 않는 이상 사용할 수가 없다. 그래서 난 매 페이지 마다 중복되는 import를 무시하고 사용할 수 있는 방법을 찾아보다가 아래와 같이 만들어 보았다.
FB3(Flex Builder 3)에서 자동적으로 생성이 된다는 말에 약간의 타격을 받았지만!! 어쨌든 3~4시간을 고민하면서 잘 하지도 못하는 class로 만들어 보았다.
타입 유형 체크를 하지 못하는 단점을 갖고 있지만, 언제부터 플래시가 타입선언을 하면서 언어로 자리 잡은것인가!!! 대충 코드 넣고 최적화에 신경 좀 써주고 비주얼만 잘 뽑아내면 된다. 코드는 사용자에겐 아무 소용이 없다. 디자이너 분들이여 그대들의 위치를 사수하고 자신과 맞지 않는 것을 하기 위해 너무 무리하게 힘 낭비를 하지 말았으면 좋겠다. 자신의 재능을 먼저 찾아 볼 수 있는 디자이너가 되었으면 좋겠다.
(그냥 내 생각을 쓰고 싶었다. 아래 코드와는 상관 없다.)
## Color 변환 프로그램은 우야꼬(윤진상)님의 ASDecorator air 파일로 변환함.
## Document Class
- FileName : GlobalPathofClass.as
package
{
import flash.display.MovieClip;
// 해당되는 import를 하나의 클래스에 담아서 사용한다.
// 현재 클래스명이 길지만 이것을 짧게 처리 한다면, 짧게 접근하여 처리가 가능해진다.
import jin_u.GlobalImport;
//
public class GlobalPathofClass extends MovieClip
{
public function GlobalPathofClass ():void
{
trace ("## GlobalPathofClass constructor");
// 클래스 확인
trace ("GlobalImport._MovieClip = ",GlobalImport._MovieClip);
trace ("flash.display.MovieClip = " + flash.display.MovieClip);
trace ("GlobalImport._MovieClip == flash.display.MovieClip = ",GlobalImport._MovieClip == flash.display.MovieClip);
// ClassA 클래스 테스트
trace ("GlobalImport._ClassA = " + GlobalImport._ClassA);
var ca:* =new GlobalImport._ClassA() ;
ca.setName ("jin_u");
trace ("## GlobalImport._ClassA : ca.setName() = ","jin_u");
trace ("## GlobalImport._ClassA : ca.getName() = ",ca.getName());
// ClassB 클래스 테스트
var tf:* =new GlobalImport._ClassB() ;
addChild (tf.createTextField("Test of GlobalImport Class",20,20));
}
}
}
- FileName : jin_u/GlobalImport.as
package jin_u
{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
//
import jin_u.classA.ClassA;
import jin_u.classB.ClassB;
//
public class GlobalImport
{
// 내장 클래스 정의
public static const _Sprite:* = Sprite;
public static const _MovieClip:* = MovieClip;
public static const _TextField:* = TextField;
public static const _TextFieldAutoSize:* = TextFieldAutoSize;
public static const _TextFormat:* = TextFormat;
// 외장 클래스 정의
public static const _ClassA:* = ClassA;
public static const _ClassB:* = ClassB;
}
}
- FileName : jin_u/classA/ClassA.as
package jin_u.classA
{
public class ClassA
{
private var name:String;
//
public function ClassA ():void
{
trace ("## ClassA constructor");
}
public function setName (pname:String="nobody"):void
{
name=pname;
}
public function getName ():String
{
return name;
}
}
}
- FileName : jin_u/classB/ClassB.as
package jin_u.classB
{
import jin_u.GlobalImport;
//
public class ClassB
{
public function ClassB ():void
{
trace ("## ClassB constructor");
}
public function createTextField (str:String, x:Number, y:Number):*
{
trace ("## ClassB : createTextField (",str,",", x,",", y,")");
//
var label:* = new GlobalImport._TextField();
label.text = str;
label.x = x;
label.y = y;
label.autoSize = GlobalImport._TextFieldAutoSize.LEFT;
label.background = true;
label.border = true;
var format:* = new GlobalImport._TextFormat();
format.font = "Verdana";
format.color = 0xFF0000;
format.size = 12;
format.underline = true;
label.defaultTextFormat = format;
return label;
}
}
}

Alternativa3D tech specs:
- Signals system — only nesessary calculations;
- BSP — quality polygon sorting, “sharp” crossings;
- n-gons support;
- reusing layers (only changed regions redrawing, polygons are independent);
- objects hierarchy;
- only necessary matrix, coords and UVs recalculating;
- perspective correction — dynamic triangulation;
- collision detection.
new features::
- dynamic lighting and shadows (точечные и направленные источники света);
- bump lighting;
- parallax mapping;
- automatic UV-mapping;
- sprites, 3D-sprites;
- sprite lighting;
- texture objects;
- Global Illumination imitation;
- sprite pre-render system (phases render on server using uploaded 3D-models);
- animation system (including inverse kinematics);
- 3D-objects interactivity;
- physics simulation.
작업하다가 갑짜기 박남숙씨가 날려준 쓸뒤 엔진이다.
정말 WOW 다.. ㅋㅋ
시간 있을때 한번 봐야지. 그게 언제일까나... ㅋㅋ
Error: Error #1502: 스크립트 실행 시간이 기본 제한 시간인 15초를 초과했습니다.
뻘짓거리로 인하여 제한 시간이 15초인걸 알게 되었다. 뻘짓거리도 가끔 해볼만 하군.. 냥냥
(기존에도 15초인가? 기존에는 이런 에러를 본적이 없어서 몰겠네...)
그리고 요번에 CS3로 작업하다가 먼가를.. 발견했는데 버그였는데 머였더라.. 생각나면 따로 글써야 겠군...
CS3.0으로 개발을 해보니 새로운 것들 투성이였다. 코드가 정말 많이 바뀌었다는 걸 실감하게 했다. 처음에만 그렇고 시간이 지나면서 익숙해 지니깐 손에 딱딱 맞는게 느낌 좋던데???
나이 많은 빽단 개발자들과는 잘 맞지 않는거 같다... 특히나 근래에는 기획에 관련되서 너무 민감하게 내가 나댄다. 기획에 기짜도 모르는 놈이... 기획 공부 좀 해야겠다는 생각을 하고 있다. 생각없이 일을 시키는 인간들과 싸우기 위해서? ㅎㅎ. 그렇다. 싸우기 위해서이고 나아가 재미있을꺼 같다. 재미있는건 해두면 나의 세상은 또 다르게 돌아갈 것이다. 약간 기대?? ^^
요즘의 몸상태는... 그러니깐 저번주와 요번주는 몸이 안좋아서 고생 좀 했다. 비가 많이 오니 수술 부분이 왜이리 쑤시던지 원... 참 괴로운 나날이였다. 회사도 몇번 못가고 재택을 했으니.. 머.. 말 다했지... 아프지 말아야 되는데... 점점 몸이 망가지는 느낌이 드냔 말야.. ㅡㅡ^
이 글을 보는 모든 사람들은 아프지 않기를 바란다.
caurina 베지어 곡선의 이징 효과를 보기 위해 Easing Method ComboBox를 추가시켰다. 엄청난 노가다다. 느낌 다보기 위해서 이런짓을 하다니. 에휴~ 머~ 클래스 분석도 할 겸. 겸사겸사 공부도 되긴 했다.
이거 완조니 자수 꼬임에 넘어간 느낌이다. 주말 caurina class에 빠져버렸다. -_-a
jasu's discriptoin : [AS3] caurina Tweener 클래스 사용 방법
caurina tweener로써 MIT 라이센스를 가지구 있는거 같다.
자수 said "static 형태로 되어 있어서 따로 인스턴스화 할 필요가 없어서 사용하기도 편하고 하나의 오브젝트에 여러개의 프로퍼티 속성에 대한 트윈을 적용할때도 복수 프로퍼티 트윈이 가능하고 포인트와 포인트 양 두점에 대한 트윈 뿐만 아니라 복수 포인트 에싱도 가능"
위와 같은 여러가지 트윈 기능을 수행할 수도 있는 것을 보인다. 아직 사용을 안해봤지만, 샘플을 몇개 봤는데 베지어 곡선에 대한 트위닝까지도 기본적으로 가능하고 그 외의 3D 작업까지도 가능 할 것으로 추정된다. 3D는 페이퍼비젼을 사용하는거 같은데... 아직 파일만 다운 받았지 분석은 해보지 못했다.
저 트윈을 찾다가 우연히 http://proto.layer51.com/default.aspx 을 보게 되었다. 감회가 새롭다. 정말 많이 갔던 곳이였는데... 코드 분석 역시 이곳에서 많이 했는데 ㅎㅎ;
음... 내일 쉴까.. caurina tween을 분석할까.. 말까.. 고민되넹 오랫만에 아무것도 없는 주말인데... 그냥 주말을 즐길까나?? ^^


20080518_RotateToSystem.zip
GlobalPathofClass.alz




::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::