[AS3] 텍스트의 조작

Programming/ActionScript 3.0 2007. 6. 15. 16:53
flash.text 패키지내에 있다. TextField 클래스를 사용하면 다이나믹 텍스트 필드 및 텍스트 입력 필드를 조작할 수 있다. flash.text 패키지에는 StaticText 클래스도 있지만 StaticText 오브젝트는 오로지 Flash authoring tool로 작성되기 때문에 ActionScript에서 인스턴스화할 수 없습니다.

다음의 예에 나타나듯이 TextFormat 오브젝트를 사용하여 TextField 전체 또는 임의의 범위의 텍스트의 포맷을 설정할 수 있다.








var tf:TextField = new TextField();
tf.text = "Hello Hello";

var format1:TextFormat = new TextFormat();
format1.color = 0xFF0000;

var format2:TextFormat = new TextFormat();
format2.font = "Courier";

tf.setTextFormat(format1);
var startRange:uint = 6;
tf.setTextFormat(format2, startRange);

addChild(tf);

Text 필드에는 plaintext 또는 HTML 형식의 텍스트의 어느쪽이든 포함할 수 있다. plaintext는 인스턴스의 text 프롭퍼티에 포함되어 HTML 텍스트는 htmlText 프롭퍼티에 포함된다.

다음 예와 같이 StyleSheet 오브젝트를 사용해 CSS 스타일 시트를 HTML 텍스트에 적용할 수 있다.

var style:StyleSheet = new StyleSheet();

var styleObj:Object = new Object();
styleObj.fontSize = "bold";
styleObj.color = "#FF0000";
style.setStyle(".darkRed", styleObj);

var tf:TextField = new TextField();
tf.text ="Hello Hello";
tf.styleSheet = style;
tf.htmlText = "<span class = 'darkRed'>Red</span> apple";

addChild(tf);


    

설정

트랙백

댓글

[AS3] 벡터 그래픽의 묘화

Programming/ActionScript 3.0 2007. 6. 15. 16:34
각각의 Shape, Sprite 및 MovieClip 오브젝트는 graphics 프롭퍼티를 갖고 있다. 각 오브젝트의 graphics 프롭퍼티는 Graphics 오브젝트로 Graphics 클래스에는 lines, fills, 셰이프를 묘화 해 조작하기 위한 프롭퍼티와 메소드가 포함된다.

예를 들어, 다음의 코드는 Shape 오브젝트로 오렌지를 묘화 한다.

import flash.display.*;
var circle:Shape = new Shape()
var xPos:Number = 100;
var yPos:Number = 100;
var radius:Number = 50;
circle.graphics.beginFill(0xFF8800);
circle.graphics.drawCircle(xPos, yPos, radius);
this.addChild(circle);
Graphics 클래스에는 단순한 셰이프를 간단하게 묘화하기 위한 다음의 메소드가 포함되어있다.
drawCircle()
drawEllipse()
drawRect()
drawRoundRect()
drawRoundRectComplex()

묘화 메소드를 호출하기 전에
linestyle()
lineGradientStyle()
beginFill()
beginGradientFill()
beginBitmapFill() 메소드를 호출하고  선스타일, fills, 또는 그 양쪽 모두를 정의하게 된다.

( 다른 표시 오브젝트를 포함한다) 표시 오브젝트 컨테이너이기도 하면서 타임 라인을 필요로 하지 않는 그래피컬 오브젝트를 작성하는 경우는 Sprite 클래스를 사용한다.

예를 들어, 다음의 Sprite 오브젝트에는 graphics 프롭퍼티로 묘화 한 circle의 아이 리스트내에 TextField 오브젝트가 있다.

var mySprite:Sprite = new Sprite();
mySprite.graphics.beginFill(0xFFCC00);
mySprite.graphics.drawCircle(30, 30, 30);
var label:TextField = new TextField();
label.text = "hello";
label.x = 20;
label.y = 20;
mySprite.addChild(label);
this.addChild(mySprite);
Sprite 또는 MovieClip 오브젝트의 그래픽 층은  항상 Sprite 또는 MovieClip의 아이 표시 오브젝트의 배후에 표시되지만 그래픽 층은 Sprite 또는 MovieClip의 아이 리스트에는 표시되지 않는다.

    

설정

트랙백

댓글

[AS3] 표시 리스트를 사용하는 어프로치의 이점

Programming/ActionScript 3.0 2007. 6. 15. 15:52
렌더링의 효율화와 파일 사이즈의 경량화

ActionScript 1.0 및 2.0에서는 MovieClip 오브젝트에서만 셰이프를 표현할 수 있었다. 하지만 ActionScript 3.0 에서는 셰이프를 표현 할 수 있는 간단한 표시 오브젝트 클래스가 있다. ActionScript 3.0 표시 오브젝트 클래스에는 MovieClip 오브젝트에 포함되는 메소드와 프롭퍼티가 모두 포함되지 않기 때문에 기존의 ActionScript(2.0 이하)보다 메모리 및 프로세서 자원에의 부담이 경감되었다.
예를 들어, 각 MovieClip 오브젝트에는 무비 클립의 타임 라인의 프롭퍼티가 포함됩니다만 Shape 오브젝트에는 포함되지 않는다. 타임 라인을 제어하기 위한 프롭퍼티는 대량의 메모리 및 프로세서 자원을 사용하는 경우가 있지만 ActionScript 3.0의 Shape 오브젝트를 사용하면 퍼포먼스가 향상된다. Shape 오브젝트는 복잡한 MovieClip 오브젝트보다 오버헤드가 적기 때문이다. Flash Player가 Shape에서는 MovieClip 프롭퍼티를 관리할 필요는 없기 때문에 스피드가 향상과 함께 오브젝트가 사용하는 메모리 용량을 줄일 수 있어 전제적으로는 CPU의 낭비를 줄일 수 있는 이점이 생겼다.


심도 관리의 향상

ActionScript 1.0 및 2.0에서의 depths는 직선적인 심도 관리 및 getNextHighestDepth() 등의 메소드를 사용해 관리되고 있었다. ActionScript 3.0에서는 표시 오브젝트의 심도를 관리하기 위해서 편리한 메소드 및 프롭퍼티가 포함된다. DisplayObjectContainer 클래스가 바로 그것이다.

ActionScript 3.0는 표시 오브젝트를 DisplayObjectContainer 인스턴스의 아이 리스트 내의 새로운 위치로 이동하면 표시 오브젝트 컨테이너 내의 다른 아이는 자동적으로 위치가 변경되어 표시 오브젝트 컨테이너내의 적절한 아이 인덱스 위치를 할당할 수 있다.

ActionScript 3.0는 항상 표시 오브젝트 컨테이너의 아이 오브젝트를 모두 찾아낼 수 있다. 어느 DisplayObjectContainer 인스턴스에도 표시 오브젝트 컨테이너의 아이의 수를 일람표시 할 수 있는 numChildren 프롭퍼티를 제공하고 있다. 또 표시 오브젝트 컨테이너의 아이 리스트는 항상 인덱스 리스트이기 위해 리스트내의 인덱스 위치 0으로부터 마지막 인덱스 위치 (numChildren - 1) 까지의 모든 오브젝트를 조사할 수 있다. 이것은 ActionScript 1.0 및 2.0 의 MovieClip 오브젝트의 메소드와 프롭퍼티에서는 불가능했던 점이다.

ActionScript 3.0는 표시 리스트 내를 순서로 이동하는 것은 간단하다. 왜냐하면 표시 오브젝트 컨테이너의 아이 리스트의 인덱스 번호에 결핍 번호가 없기 때문이다. 표시 리스트 내의 이동과 오브젝트의 depths 관리는 ActionScript 1.0 및 2.0 보다 간단하게 되었다. ActionScript 1.0 및 2.0에서는 무비 클립의 심도순서에 불연속인 결핍이 있는 오브젝트가 포함되어 있었기 때문에 오브젝트의 리스트 내를 이동하는 것이 곤란했지만 ActionScript 3.0에서는 표시 오브젝트 컨테이너의 각각의 아이 리스트가 1 개의 배열로서 내부에 캐쉬되므로 인덱스에 의한 룩업이 매우 고속으로 실행된다. 또한 표시 오브젝트 컨테이너의 모든 아이를 매우 고속으로 루프 할 수도 있게 되었다.


표시 리스트내의 자유로운 이동


ActionScript 1.0 및 2.0 에서는 벡터 셰이프나 Flash authoring tool로 묘화 된 오브젝트에는 액세스 할 수 없다. ActionScript 3.0에서는 그러한 표시 리스트상의 모든 오브젝트, 즉 ActionScript를 사용해 작성된 오브젝트 및 Flash authoring tool로 작성된 모든 표시 오브젝트에 액세스 할 수 있게 되었다.


    

설정

트랙백

댓글

[AS3] 정적 프롭퍼티와 스코프 체인

Programming/ActionScript 3.0 2007. 6. 15. 14:00
정적 프롭퍼티는 계승되지 않지만 그 프롭퍼티가 정의된 클래스 및 그 클래스의 서브 클래스에서는 스코프 체인내에 있다. 즉, 정적 프롭퍼티가 정의된 클래스 및 그 서브 클래스의 스코프 내로부터 직접 정적 프롭퍼티에 액세스 할 수가 있다.













package {
import flash.display.MovieClip;
public class StaticExample extends MovieClip {
public function StaticExample() {
var myExt:Extender = new Extender();
}
}
}

class Base {
public static var test:String = "static";
}

class Extender extends Base {
public function Extender () {
trace(test); //
}
}

출력 : static


인스턴스 프롭퍼티가 같은 클래스 또는 슈퍼 클래스내에서 정적 프롭퍼티와 같은 이름을 사용하고 있는 경우 인스턴스 프롭퍼티는 스코프 체인내에서 우선 순위가 높아진다. 이는 정적 프롭퍼티의 값이 아니라 인스턴스 프롭퍼티의 값이 사용되는 것을 의미한다.

package {
import flash.display.MovieClip;
public class StaticExample extends MovieClip {
public function StaticExample() {
var myExt:Extender = new Extender();
}
}
}

class Base {
public static var test:String = "static";
}

class Extender extends Base {
public var test:String = "instance";
public function Extender () {
trace(test); //
}
}

출력 : instance
다른 예로 parent_mc라는 무비클립에 포함된 child_mc라는 무비클립이 있을 때 두개의 무비클립에 CLICK 이벤트 적용하게 되면 결과는 아래와 같이 나오게 된다.

parent_mc.child_mc.addEventListener(MouseEvent.CLICK, childClickHandler);
parent_mc.addEventListener(MouseEvent.CLICK, parentClickHandler);

function childClickHandler(evt:Event):void{
trace(evt.target.name +" is a child");
}
function parentClickHandler(evt:Event):void{
trace(evt.target.name +" is a parent");
}
출력 :
child_mc is a child
child_mc is a parent
parentClickHandler에서 해당 이벤트가 적용된 무비클립에 접근하기 위해서는 아래와 같은 형태로 접근을 시도해야 한다.

trace(evt.target.parent.name +" is a parent");

    

설정

트랙백

댓글

[AS3] Bound methods

Programming/ActionScript 3.0 2007. 6. 15. 11:38
ActionScript 3.0는 오브젝트 인스턴스를 자동적으로 기억하는 Bound methods를 제공한다. 이 기능은 이벤트 처리에 도움을 줄 수 있는데 기존의 ActionScript 2.0에서는 Bound methods에 추출원의 오브젝트 인스턴스가 기억되지 않아서 Bound methods가 불려 갔을 때에 예기치 않은 동작이 발생했다. 이를 해결하기 위해서 mx.utils.Delegate 클래스를 사용하는 것이 일반적인 방법이었지만, ActionScript 3.0부터는 불필요한 과정이 되었다.









class ThisTest {
private var num:Number = 3;
function foo () { // 정의된 Bound methods
trace ("foo's this: " + this);
trace ("num: " + num);
}
function bar () {
return foo; // 돌려주는 Bound methods
}
}

var myTest:ThisTest = new ThisTest();
var myFunc:Function = myTest.bar();
trace(this);
myFunc();
출력 :
[object global]
foo's this:[object ThisTest]
num: 3

Bound methods foo() 의 this 참조가 그 직전의 행의 this 참조가 글로벌 오브젝트를 가리키고 있지만 여전히 ThisTest 클래스의 인스턴스를 가리키는 것을 나타내고 있다. 게다가 myFunc 변수에 속하고 있는 Bound methods는 계속 ThisTest 클래스의 멤버 변수에 액세스 할 수 있다. 이 같은 코드를 ActionScript 2.0에서 실행하면 this 참조가 일치하기 때문에 num 변수는 undefined 가 된다.

    

설정

트랙백

댓글

[AS3] 파일 내에 복수 클래스

Programming/ActionScript 3.0 2007. 6. 15. 04:11
ActionScript 2.0에서는 클래스 파일을 작성하는 경우 클래스와 같은 이름의 파일을 만들게 된다.  예를 들어 Rec이라는 클래스가 있을 때 클래스의 원시 코드는 "Rec.as" 와 같은 파일명으로 저장이 되어야 한다. "Rec.as" 파일에 존재할 수 있는 클래스는 Rec클래스만 가능한 일이었다.

하지만 ActionScript 3.0 에서는 1개의 파일 내에 복수의 클래스를 저장할 수 있도록 설계되었다. Flash 9 alpha 버전에서는 package{} 내에서도 internal class로 여러 개의 클래스가 package내에서 사용가능하도록 하였으나 CS3로 만들면서 이러한 기능은 제외되었다. 하지만 package 외에는 여러개의 클래스를 정의할 수가 있도록 되어 있다. 1 개의 원시 소스 파일에 복수의 클래스를 보존하는 것이 편리할 수도 있지만 남용하면 OOP형태의 언어에서 바람직하지 않은 문제를 양산할 우려가 있다. 문제는 다음과 같은 경우이다.

1.    복수의 클래스가 1 개의 소스파일에 보존되고 있는 경우, 각각의 클래스를 재이용하는 것이 곤란하게 된다.

2.    파일명과 클래스명이 대응하고 있지 않는 경우, 특정의 클래스의 원시 소스코드를 찾아내는 것이 곤란하다.

이러한 문제점으로 인하여 Adobe에서는 각각 하나의 클래스는 하나의 원시소스파일로 저장하는 것을 권장하고 있다. Alpha 버전에서 package 내에서 복수 클래스를 정의할 수 있었던 것을 제외시킨 이유 또한 이러한 문제점 때문일 것이라는 생각이다.

다시 생각해보면 기존 ActionScript 2.0에서 디렉토리 형태로만 패키지 영역을 정의했던 것을 벗어나 package에서 명시적으로 패키지 영역을 정의하고 그 영역 안에서 복수의 클래스를 정의할 수 있도록 하는 방향으로 검토하였으나 위와 같은 두가지 문제로 인하여 언어적 비판을 벗어나기 위해 CS3 제품에서 package 내 복수 클래스 정의 부분을 제외한 것이 아닌가 생각된다. 개념적 접근에서 실의[實義]를 추구했다고 보여진다.

    

설정

트랙백

댓글

[AS3] for each..in 문법

Programming/ActionScript 3.0 2007. 6. 15. 04:04
var myObj:Object = {x:20, y:30};
for each (var num in myObj) {
    trace (num);
}
//
출력 :
// 20
// 30


XML 또는 XMLList 오브젝트의 반복 처리를 실행.
var myXML:XML = <users>
                   <fname>Jane</fname>
                   <fname>Susan</fname>
                   <fname>John</fname>
                </users>;

for each (var item in myXML.fname) {
    trace(item);
}
/*
출력
Jane
Susan
John
*/


배열의 엘리먼트의 반복 처리를 실행할 수도 있음.
var myArray:Array = ["one", "two", "three"];
for each (var item in myArray) {
    trace (item);
}
//
출력 :
// one
// two
// three

    

설정

트랙백

댓글

[AS3] Object 형의 독립

Programming/ActionScript 3.0 2007. 6. 15. 03:24
ActionScript 2.0에서는 아래의 경우 1번과 2번은 같은 형으로 정의하게 되는데 이는 형을 지정하지 않은 변수의 경우는 Object 형으로 치환되기 때문이었다.

1.    var obj:Object;
2.    var obj;

하지만 ActionScript 3.0에서는 형을 지정되어 있지 않은 변수라고 하는 개념이 도입되었다. 이는 다음의 1, 2번과 같이 2 개의 방법으로 지정할 수 있다.

1.    var obj:*;
2.    var obj;
3.    var obj:Object;

형이 지정되어 있지 않은 1번과 2번은 3번의 Object 형태의 변수와 같지는 않다. 주된 차이는 형이 지정되어 있지 않은 변수는 특별한 값 undefined 를 담을 수 있지만 Object 형태의 변수는 그 값을 보관 유지할 수 없다는 것이다. 오직 null값만이 존재할 수 있다. 이를 다시 말하면 ActionScript 3.0에서는 더 이상 형을 지정하지 않은 변수는 Object형이 아니라는 것이다. 이는ActionScript 2.0보다 형 변환에 따른 엄격한 규칙을 적용하고 있다고 할 수 있겠다.

    

설정

트랙백

댓글

[AS3] Understanding garbage collection in Flash Player 9

Programming/ActionScript 3.0 2007. 6. 13. 11:17

I've been playing around with ActionScript 3.0 for a while now, and I'm really excited by its capabilities. The raw execution speed by itself provides so many possibilities. Toss in E4X, sockets, byte arrays, the new display list model, RegEx methods, a formalized event and error model, and a few dozen other features for flavor, and you have a pretty heady brew.

With great power comes great responsibility, and this is very true for ActionScript 3.0. A side effect of all this new control is that the garbage collector is no longer able to make as many assumptions about what it should automatically tidy up for you. This means that Flash developers moving to ActionScript 3.0 will need to develop a very strong understanding of how the garbage collector operates, and how to work with it effectively. Building even seemingly simple games or applications without this knowledge could result in SWFs that leak like a sieve, hogging all of a system's resources (CPU/RAM) and causing the user's system to hang—potentially even forcing them to hard reboot their computer.

To understand how to optimize your code for ActionScript 3.0, you'll first need an understanding of how the garbage collector works in Flash Player 9. Flash has two processes for finding objects that are not in active use and removing them. This article looks at both techniques and describes how they are relevant to your code.

At the end of this article you can find a simulation of the garbage collector in Flash Player 9 that visually demonstrates the concepts explained herein.

About the garbage collector

The garbage collector is a behind-the-scenes process that is responsible for deallocating the memory used by objects that are no longer in use by the application. An inactive object is one that no longer has any references to it from other active objects. In order to understand this, it is very important to realize that when working with non-primitive types (anything other than Boolean, String, Number, uint, int), you are always passing around a reference to the object, not the object itself. When you delete a variable you remove the reference, not the object itself.

This is easily demonstrated in the code below:

// create a new object, and put a reference to it in a:
var a:Object = {foo:"bar"}
// copy the reference to the object into b:
var b:Object = a;
// delete the reference to the object in a:
delete(a);
// check to see that the object is still referenced by b:
trace(b.foo); // traces "bar", so the object still exists.

If I were to update the code in the example above and delete "b" as well, it would leave my object with no active references and free it for garbage collection. The ActionScript 3.0 garbage collector uses two methods for locating objects with no active references: reference counting and mark sweeping.

Reference counting

Reference counting is one of the simplest methods for keeping track of active objects, and has been used in Flash since ActionScript 1.0. When you create a reference to an object, its reference count is incremented. When you delete a reference, its reference count is decremented. If the reference count of an object reaches zero, it is marked for deletion by the garbage collector.

Here's an example:

var a:Object = {foo:"bar"}
// the object now has a reference count of 1 (a)
var b:Object = a;
// now it has a reference count of 2 (a & b)
delete(a);
// back to 1 (b)
delete(b);
// the reference count down is now 0
// the object can now be deallocated by the garbage collector

Reference counting is simple, it doesn't carry a huge CPU overhead, and it works well in most situations. Unfortunately, the reference counting method for garbage collection is not optimal when it comes to circular referencing. Circular referencing is the situation when objects cross-reference each other (directly, or indirectly via other objects). Even if the application is no longer actively using the objects, their reference counts remain above zero, so the garbage collector never removes them. The code below illustrates how this works:

var a:Object = {}
// create a second object, and reference the first object:
var b:Object = {foo:a};
// make the first object reference the second as well:
a.foo = b;
// delete both active application references:
delete(a);
delete(b);

In the code shown above, both of the active application references have been deleted. I no longer have any way of accessing the two objects from my application, but the reference counts of both objects are 1 because they reference each other. This situation can become much more complex (a references c, which references b, which references a, etc.) and can be difficult to deal with in code. Flash Player 6 and 7 had issues relating to circular referencing in XML objects: each XML node referenced both its children and its parent, so they were never deallocated. Fortunately, Flash Player 8 added a new garbage collection technique called mark and sweep.

Mark sweeping

The second strategy employed by the ActionScript 3.0 (and Flash Player 8) garbage collector to find inactive objects is a method called mark and sweep. Flash Player starts at the root object of your application (which is conveniently called the "root" in ActionScript 3.0) and walks through every reference in it, marking each object it finds.

Next, Flash Player iterates through each of the marked objects. It continues this behavior recursively until it has traversed the entire object tree of your application, marking everything it can reach through an active reference. At the end of this process, Flash Player can safely assume that any objects in memory that are not marked no longer have any active references to them and can be safely deallocated. Figure 1 illustrates how this works: The green references were followed by Flash Player during marking, the green objects are marked, and the white objects will be deallocated.

Objects that no longer have active references are identified by Flash Player using the mark and sweep method

Figure 1. Objects that no longer have active references are identified by Flash Player using the mark and sweep method

Mark and sweep is very accurate. However, because Flash Player has to traverse your entire object structure, the process is costly in terms of CPU usage. Flash Player 9 reduces this cost by carrying out iterative mark and sweep—the process occurs over a number of frames, instead of all at once—and by running this process only occasionally.

Deferred garbage collector and indeterminacy

In Flash Player 9, the garbage collector's operations are deferred. This is a very important thing to understand. Your objects will not be removed immediately when all active references are deleted. Rather, they will be removed at some indeterminate time in the future (from a developer standpoint). The garbage collector uses a set of heuristics that look at the RAM allocation and the size of the memory stack, among other things, to determine when to run. As a developer, you must accept the fact that you will have no way of knowing when, or even if, your inactive objects will get deallocated. You must also be aware that inactive objects will continue to execute indefinitely, until the garbage collector deallocates them, so your code will keep running (enterFrame events will continue), sounds will keep playing, loads will keep happening, other events will keep firing, and so on.

It's very important to remember that you have no control over when the garbage collector in Flash Player will deallocate your objects. As a developer, you will want to make the objects in your games and applications as inert as possible when you are finished with them. Strategies to manage this process will be the focus of my companion article, Resource management strategies in Flash Player 9.

Notice the sawtooth pattern of the total memory in the following garbage collection simulation (click Figure 2 or the link below it). The dips are caused when the collector carries out a sweep. Click on the chart to focus it, then press Spacebar to pause or restart, and hold the up/down arrows to change the memory usage trend as it runs.

Garbage collection simulation

Figure 2. Garbage collection simulation

As shown in the following simulation (click Figure 3 or the link below it), drag out objects (round rectangles) and references to those objects. Then run reference counts or mark and sweep to see which objects would be collected. The number in an object indicates the number of references to that object.

Garbage collection simulation: mark and sweep

Figure 3. Garbage collection simulation: mark and sweep

Where to go from here

Understanding garbage collection is going to be one of the most important steps for writing optimized code that ensures that your Flash project runs with minimal impact on the user's computer. Read my companion article, Resource management strategies in Flash Player 9, and visit the Flash Developer Center and Flash Player Developer Center.

Also check out my blog at gskinner.com to read more about weak references and download helper classes that I've written.

About the author

Grant Skinner is the CEO and chief architect of gskinner.com, a Flash development and consulting company. He works with leading new media agencies and progressive corporate clients to create cutting-edge applications, games, and multimedia pieces. His expertise in fusing coding with interface design, usability, marketing, and business logic has garnered him international acclaim and resulted in a number of prestigious industry awards, including Best Canadian Developer at FITC 2005. Grant maintains an active blog at gskinner.com/blog/ and an exhibit of his experimental work at incomplet.org.


국문 : http://www.adobe.com/kr/devnet/flashplayer/articles/garbage_collection.html
    

설정

트랙백

댓글

[AS3] ActionScript 3.0 첫 프로그래밍

Programming/ActionScript 3.0 2007. 6. 13. 02:36
늦은 감이 없지 않지만 처음으로 AS3를 가지고 코딩을 해봤다. 간단한 결과물이지만 여러 가지로 사소한 것부터 이벤트 처리에 이르기까지 적지 않게 AS2에서 AS3으로 migration한 것을 볼 수가 있는데 이 결과물을 만들고 보니 참 재미있다는 생각이 든다. 플래시의 actionscirpt의 변천사를 보면 참으로 잘 짜여진 시나리오라는 생각과 동시에 엄청난 잔머리의 위대함이라는 생각도 들기 때문이다.

간단한 코딩이지만 직접 접하고 보니 이제야 비로소 정리가 되는 듯 하다. 기존에 호환성 문제로 인해서 불필요하게 사용되었던 군더더기가 많이 빠지고 깔끔해 졌다는 느낌이다. 형식적이고 자율적인 구조로 인해서 혼돈이 왔던 부분들은 간결한 형태로 변화되었고 그 형태 또한 만족스럽다.

하지만 그 동안 편리하게 사용되었던 기능들도 그러한 진화를 바탕으로 다소 불편한 부분도 없지 않다. 그러나 그 불편함 또한 개발자에게 동기와 목적을 확실하게 이미지화 하기 때문에 납득할 만한 변화라는 생각이다.

앞으로 플래시를 사용하는 모든 분야의 발 빠른 변화가 상당히 재미있어질 것 같다…

[Flash] http://jasu.tistory.com/attachment/cfile30.uf@222F35385880210F23FEAD.swf





// Rec.as
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;

public class Rec extends MovieClip{
public function Rec(){
trace(this.name +" is created");
this._mc.buttonMode = true;
this._mc.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
this._mc.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
this._mc.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
this._mc.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
this._mc.addEventListener(MouseEvent.MOUSE_WHEEL, mouseWheelHandler);
}
private function mouseDownHandler(event:MouseEvent):void{
trace(this.name + " : mouseDownHandler");
this.startDrag();
}
private function mouseOutHandler(event:MouseEvent):void{
trace(this.name + " : mouseOutHandler");
var myTween:Tween = new Tween(this, "scaleX", Elastic.easeInOut, this.scaleX, 1, 1, true);
var myTween2:Tween = new Tween(this, "scaleY", Elastic.easeInOut, this.scaleY, 1, 1, true);
}
private function mouseOverHandler(event:MouseEvent):void{
trace(this.name + " : mouseOverHandler");
var topPosition:uint = this.parent.numChildren - 1;
this.parent.setChildIndex(this, topPosition);
var myTween:Tween = new Tween(this, "scaleX", Elastic.easeInOut, this.scaleX, 1.4, 0.7, true);
var myTween2:Tween = new Tween(this, "scaleY", Elastic.easeInOut, this.scaleY, 1.4, 0.7, true);
}
private function mouseUpHandler(event:MouseEvent):void{
trace(this.name + " : mouseUpHandler");
this.stopDrag();
}
private function mouseWheelHandler(event:MouseEvent):void{
trace(this.name + " : mouseWheelHandler");
}
}
}

// RecDocumentClass

package{
import flash.display.Sprite;
import flash.display.MovieClip;
public class RecDocumentClass extends MovieClip{
private var rootChild:Sprite;
public function RecDocumentClass(){
rootChild = new Sprite();
addChild(rootChild);
init();
}
private function init():void{
var Rec1:Rec = new Rec();
Rec1.x = Rec1.y = 100;
rootChild.addChild(Rec1);

var Rec2:Rec = new Rec();
Rec2.x = Rec2.y = 200;
rootChild.addChild(Rec2);

}
}
}





    

설정

트랙백

댓글

플래시를 느끼며...

Miscellaneous/Story 2007. 6. 12. 02:31

오랜만에 포스트를 쓰게 된다.
플래시라는 툴을 알게 된지 벌써 10년 가까이 되어가는 듯 하다. 그때는 액션스크립트라는 개념 보다는 웹디자인을 위한 저작도구로서의 가치가 급부상 하던 시절이었기 때문에 언어 형태의 작업을 할 일은 거의 없었다.

대학시절 내가 졸업을 하고 무엇을 하며 살 것인가를 고민할 때 플래시는 안중에도 없었다. 단지 개인 홈페이지를 만들 때 보기 좋게 하기 위한 방법에 불과했고 그런 작업 자체가 그냥 나의 작은 즐거움이었기에 관심만 갖고 있을 뿐이었다.

대학 졸업과 여러가지 우여곡절 끝에 난 지금의 회사에서 자리를 잡게 되었다. 집에서 개인 홈페홈페이지를 만들 때 사용했던 MX는 더 이상 실무에서는 사용되지 않고 있었다. 한번도 사용해 보지 않았던 Mx 2007 플래시를 열어보고 툴 사용법부터 하나하나 책을 뒤져가며 다시 공부해야 했고 그 과정속에서 짧지만 좌절도 겪었다.

혼자 서울로 상경하여 두번째 직장인 이곳에서 과연 내가 살아남을 수 있을 까 하는 의구심도 들었고 무엇보다도 내가 하는 작업 자체에 만족할 수 없는 경험의 연속이었기 때문에 더더욱 내가 작게만 느껴졌었다.

2년 3개월이라는 시간은 적으면 적은 시간이고 길다고 하면 긴 시간이다. 그 기간동안 내가 할 수 있는 최선의 노력을 다 했는가라는 질문을 스스로 던져보면 쉽게 ‘예’라고 대답할 수가 없다. 마땅히 집에서 할일 없어서, 또는 해야하는 일이였던 경우가 많았다. 물론 그 속에서 재미를 느꼈기 때문에 지금까지 플래시를 만지고 있지만 그것만으로 부족한 것이 사실이다.

얼마전에 플래시 모임에 처음으로 나가게 되었다. 회사내 팀 회식이 같은 날에 잡혔었는데 두 모임 모두 공교롭게도 1주가 밀리면서 같은 날자에 잡혔으나 약간의 슬럼프에 빠져있는 나에게 조금이나마 돌파구를 찾아보고자 플래시 모임에 참가를 했다.

온라인 상에서 안면이 있던 많은 분들을 만날 수 있었다. 나보다 나이 많은 형님들도 있었고 나보더 나이어린 동생들도 볼 수 있었는데 그 두 부류 모두 하나의 공통점은 배울점이 있다는 것이다.

나는 항상 배움이라는 것을 생각하면 눈에 보이고 머리로 익혀야 하는 배움 보다는 눈으로 보이지 않지만 느낌으로 배우는 배움이 더 중요하다고 생각한다. 눈에 보이는, 머리로 배우는 배움은 단편적인 영화라고 한다면 눈이 보이지 않으나 느낌으로 배울 수 있는 배움은 소설과도 같다.

후자는 시간과 장소를 떠나서 언제 어느 때나 배울 수 있다. 다만 그 배움이란 것은 남이 알려주는 것이 아니라 내 안에서 느끼는 것이기에 자신의 것으로 만들기 위해서는 긍정적인 생각속에서 살아갈 필요가 있을 듯 싶다.

나는 한참 플래시를 공부하는 후배들에게 하고싶은 말이 있다면 이것 하나만 기억했으면 좋겠다.플래시라는 툴은 공부하는 것이 아니라 느끼는 것이라고 말이다.

오랜만에 좋은 분들과 즐거운 이야기 속에서 작지만 큰 배움을 얻었던 하루였다. 그날 참석했던 모든 분들에게 고마움을 전한다.


    

설정

트랙백

댓글

생활에 변화를 꾀하고 싶다.

Miscellaneous/Story 2007. 5. 23. 16:47
    

설정

트랙백

댓글

Flickr Searcher 1.7 업로드

Project/Programming 2007. 5. 10. 11:45
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

Flickr의 Open API를 이용한 사진 검색 어플리케이션 'FlickrSearcher'
version 1.7

====================================================================================================
Version 1.7  Release date : 2007/05/10
Change log
1. 1.6에서 'VIEW AUTHOR PHOTOS'로 검색을 할때 search mode 'name'으로 이동하면서 textField 길이가 불규칙하게 변했던 버그 수정.
2. 정보 TextField를 선택가능 하도록 변경.
3. Photo Information에서 이미지의 exif 정보를 볼 수 있도록 기능 추가.
====================================================================================================
    

설정

트랙백

댓글

크로스도메인 정책과 플래시의 bitmapData 문제

Programming/ActionScript 2.0 2007. 4. 30. 02:01
요즘 집에서 flickr api를 이용하여 이미지 갤러리를 만들고 있는데 한 가지 문제로 인하여 구현 하고자 하는 기능을 진행하지 못하는 상황이 발생했다.

문제는 로컬에서 load한 이미지(http://경로를 포함한 flickr의 이미지)를 bitmapData로 변환하면 제대로 작동하지만 이것은 개인 계정이나 flickr와 도메인 정책이 다른 웹에 올려놓고 이미지를 load한 후 그 load한 무비클립을 bitmapData로 변환 후 draw하게 되면 작동하지 않는다.

그 동안은 한 계정, 또는 플래시 라이브러리에 있는 이미지를 사용했기 때문에 이러한 문제를 확인하지 못하였으나 flickr를 이용하여 만들다 보니 서로 다른 도메인 계정에서 load한 이미지는 bitmapData로 만들 수 없다는 결론이다.

상식적으로는 도메인이 다르더라도 일단 무비클립에 이미지를 load한 상황이라면 화면에 보이는 무비클립을 비트맵데이터로 전환할 수 있을 것이라는 생각을 했었는데…

    

설정

트랙백

댓글

MS, 어도비 플래시에 도전장

Miscellaneous/Etc 2007. 4. 17. 16:52
이번에 MS에서 플래시와 비슷한 실버라이트 제품을 출시한다. 소비자로서는 다양한 제품으로 인하여 선택의 폭이 넓어지고 그에 따라서 질적인 향상을 가져온다면 좋을 일일 수도 있겠지만 개발자 입장에서는 달갑지 않은 일일 수도 있을 듯 싶다. 더욱이 그 대상이 MS라는 것,

새로운 기술을 바탕으로 기존의 툴로 불가능 했던 것을 만들어 낸다던가, 기존의 제품보다 향상된 퍼포먼스를 자랑한다면 좋은 현상이겠지만 그런 것이 아닌 비슷한 제품으로 서로 힘의 논리로 시장을 형성해 나간다면 좋은 일은 아닐 것이다.

가만히 보면 MS라는 회사는 미국의 국수주의와 많은 부분 닮아있다는 생각도 든다. 물론 자본주의 사회에서의 자유시장원리를 무시할 수는 없는 일이지만 그로 인해서 피해를 보고 더 발전적인 방향으로 가지 못한 부분들도 많은 것 같다.



    

설정

트랙백

댓글

블로그의 올플래시 페이지 infinite 메뉴 추가

Project/Web 2007. 4. 15. 02:26
예전 방문자 카운터 기능을 추가하면서 생각한 것이 있었다. div로 iframe을 잡고 상위 레이어를 올리면 올플래시 형태의 페이지를 만들 수 있을 거라는 생각에서 시도해 보았다.

이 구조를 넣으면서 여러가지 문제점이 생겼는데 문제점들은 아래와 같다.


1. 자바스크립트에서 플래시로 값을 넘겨주기 위해서는 플래시에서 ExternalInterface 클래스를 사용하게 된다. 이 클래스를 이용하면 html에 삽입된 javascript와 플래시간 상호 지정한 function을 호출할 수 있으며 return값도 전달 할 수 있다.
하지만 배경 화면에 해당하는 플래시에서 티스토리 스킨에 제공하고 있는 skin.html안에 삽입된 자바스크립트를 호출하는 것은 가능하나 그 자바스크립트에서 플래시로 값을 넘겨주지 못하는 문제점이 있다. 아마도 크로스 도메인 문제인 듯 싶다.

하루정도 고민 하다가 결국은 우회하기로 결정했다. 일단 하단에 있는 메뉴플래시에서 infinite 버튼을 클릭할 시에 상위에 있는 레이어를 display = block을 적용하고 플래시의 LocalConnection을 이용하여 레이어 안에 있는 플래시와 통신을 하는 방법이다.
여기도 또다시 문제점이 발생했는데 하위 플래시에서 레이어를 살리는 동시에 상위 플래시와 통신을 할 경우에는 기존에 있던 플래시가 포함된 레이어가 작동을 정지하면서 제대로 호출해주지 않는 문제가 발생했다. Display를 대신해 visibility을 이용해 보았지만 마찮가지였다.

상위 레이어가 살아났을 때 플래시에 레이어가 나타났다는 메시지를 전달함으로써 infinite의 초기 시작 모션을 적용해야 하는데 그 문제가 해결되지 않아서 발생하는 문제점이다.

익스플로러와 파이어폭스 두 브라우저에서 테스트해본 결과 두 브라우저 간의 약간의 차이가 발생했다.

그래서 LocalConnection으로 플래시간 통신을 하되 약간은 딜레이 타임을 적용하기로 하고 레이어를 살리고 초기 시작 모션들 들어가기 전에 0.5초간 로딩바를 보여주는 형태로 LocalConnection의 문제점을 해결했다. 사실 해결이라기보다는 궁여지책이다.


2. 두번째 문제는 익스플로러와 파이어폭스의 호환 문제다. document.all는 IE에서만 먹는 코딩 방식이라는 것을 알게 되었다.
보 통 IE에서 div의 style이나 레이어에 접근하기 위한 접근자 방식을 document.all.ID.style.display이런 형태로 썼는데, 이러한 코딩방식은 파이어폭스나 타 브라우저에서는 먹히지 않는 방식이다. MSDOM에서만 사용하는 것이며 W3C에서도 권하지 않는 방법이라고 한다. 우리나라의 경우는 90% 가량이 IE를 사용하고 있는 상황이기 때문에 IE를 사용하고 있다면 별 문제가 되지 않겠지만 타 브라우저를 사용하는 사용자에게는 치명적인 문제를 발생시킨다. 공든 탑이 이러한 표준 문제에서 무너질 수 있다.

W3C에서 권장하는 표준형은 document.getElementById("ID").style.display 이러한 형태로 접근하는 것이다.


3. 세번째 문제는 티스토리에 로그인한 상태에서 블로그에 접근했을 때는 오른쪽 상단에 티스토리 툴바가 보이게 된다.  테스트 과정에서 레이어의 index값을 아무리 올려도 상위에 있는 레이어보다 티스토리 툴바가 상위에 떠있는 것이다. 그래서 블로그 소스를 뒤져보니 상위에 뜨는 툴바의 index값이 무려 1000000라는 사실… 그래서 상위에 뜨는 레이어의 index 값을 1000001로 잡아서 해결했다.


4. 네번째는 문제라기 보다는 레이어를 올리는 과정에서 생겨난 부가적인 노동이다. 블로그에서 음악이 흘러나오도록 play를 시켜놓은 상태에서 infinite 페이지로 들어갔을 때는 끄고, play되고 있던 사용자라면 다시 나올 때 play를 시켜주는 것이다. 그리고 음악을 듣지 않고 있던 사용자라면 그대로 음악이 흘러나오지 않는 기능을 추가해야 했다. 그리고 블로그의 배경에서 랜덤으로 생겨나는 나비의 움직임이 infinite 페이지를 접근했을 때에 불필요하게 CPU의 낭비를 가져오고 있어서 infinite메뉴로 들어갔을 때는 나비들이 생성하지 않도록 interval을 clear시켜주고 다시 블로그로 나갔을 때는 생성하도록 설정해 놓았다.


Infinite메뉴를 추가하면서 가장 큰 문제는 자바스크립트에서 플래시로 통신하기가 어렵다는 것이 가장 큰 문제였던 것 같다. 일단 지금은 LocalConnection을 이용하여 플래시 간에 주거니 받거니 하고 있으니 나중에 알게 되면 수정해야 겠다.

Infinite 메뉴는 아직 구체적은 내용 구성과 구현 방법에 대해서는 생각해 둔 것은 없다. 일단 블로그에서 새로운 시도를 해본 것이고 캠버스에 어떤 것들을 담아갈지는 앞으로 시간 날 때 고민해 봐야 하겠다.

사용자 삽입 이미지


    

설정

트랙백

댓글

어도비, 모바일 개발용 디바이스 센트럴 발표

Miscellaneous/Etc 2007. 4. 3. 22:02
사용자 삽입 이미지
이번 주에 CS3 릴리스와 관련된 기사거리가 너무 많은 이유로 어도비의 디바이스 센트럴(Device Central) 발표를 놓칠 뻔 했다. 디바이스 센트럴은 보다 자연스러운 모바일 개발 프로세스를 목표로 한 애플리케이션 및 소셜 커뮤니티이다.

그 동안 모바일 애플리케이션을 개발하는 것은 매우 어려운 일이었다. 휴대폰 종류와 화면 크기가 매우 다양하기 때문에 사용자 인터페이스를 구성하는 것도 만만치 않았고 컴퓨팅 성능이 각양각색인 장치들을 개발하는 것도 쉬운 일이 아니었다.

그 동안 장치용 애플리케이션을 만드는 방법으로 플래시 라이트(Flash Lite)가 많은 인기를 끌었다. 하지만 디바이스 센트럴의 목표는 디자이너와 개발자들이 CS3 툴을 사용하여 멋진 모바일용 콘텐츠를 훨씬 더 쉽게 만들 수 있게 하는 것이다.

어도비 디바이스 센트럴은 플래시(Flash), 드림위버(Dreamweaver), 포토샵(Photoshop), 일러스트레이터(Illustrator) 및 기타 제품들을 포함하여 어도비의 많은 주력 제품들과 연계하여 판매된다.

그 모든 제품들에는 특정한 작업에 초점을 맞추어 각각 다른 버전의 디바이스 센트럴이 제공된다. 예를 들어, 플래시와 함께 판매되는 디바이스 센트럴 버전은 사용자 인터페이스를 만들고 싶어 하는 플래시 디자이너들을 겨냥한 것이다.

드림위버와 함께 판매되는 버전은 멋진 모바일 웹 환경을 만드는데 초점을 맞추고 있다. 포토샵에 초점을 맞춘 디바이스 센트럴을 이용하면 프로토타입을 빠르고 쉽게 만들 수 있다.

이 모든 툴은 함께 사용할 수 있으므로 포토샵에서 하던 일을 빠르고 쉽게 처리하여 플래시에 넣을 수 있으므로, CS3 제품군에서, 그리고 디바이스 센트럴 자체 내에서 일관성 있는 환경을 사용할 수 있다.

따라서 이 제품을 사용하는 디자이너들과 설계자들은 다채로운 모바일 애플리케이션을 만드는 방식에 있어 유연성을 즐길 수 있다.



워크플로를 제외하고 디바이스 센트럴은 개별적인 장치에 관한 풍부한 정보도 제공한다. 여러 가지 면에서, 이것은 시중에 나와 있는 휴대폰, 그리고 각 휴대폰의 규격과 기능에 대해 모든 것을 알려주는 백과사전이다.

개발자들과 설계자들은 디바이스 센트럴의 데이터베이스를 사용하여 기능에 따라 목표로 삼을 휴대폰을 구상할 수 있다. 개발 대상이 될 특정한 화면 크기와 같은 요소를 선택하면, 그 요소가 적용되는 모든 휴대폰이 나타난다.

이것을 이용하면 개발자들이 장치들을 신속하게 결합하여 특정한 요소에 맞추어 콘텐츠를 극대화할 수 있다.

디바이스 센트럴은 콘텐츠를 테스트하는 면에서도 상당한 발전을 하였다. 그것은 백과사전 내의 모든 장치들에 대해 완벽한 에뮬레이션을 제공하며, 테스터들이 배터리 전력, 신호 강도, 시스템 시간 등과 같은 요소들을 수정할 수 있다.

모바일 인터페이스에는 이런 요소들이 점점 더 많이 포함될 것이다. 날이 저물면 배경이 점점 어두워진다든지, 배터리 전력이 줄어들면 실제로 인터페이스의 일부가 흐려진다던지 하는 기능도 적용할 수 있다.

따라서 모바일 환경이 훨씬 더 다채로워지며, 개발자들이 그것을 테스트할 수 있다는 것이 중요하다. 디바이스 센트럴을 사용하면, 장치를 완벽하게 제어할 수 있으며 인터페이스와 콘텐츠가 정확하게 기능을 수행하고 있는지 확인할 수 있다.



장치의 수가 증가하고, 모바일 콘텐츠가 브랜드나 개개인이 사용자들에게 도달하는데 중요한 수단이 되면서, 모바일 세계에 맞게 디자인하는 것은 매우 수지 맞는 일이 되었다. 디바이스 센트럴은 그렇게 하는데 도움이 되는 멋진 프로그램이며 CS3의 숨겨진 보석 중 하나이다.

크리에이티브 제품군에 속한 다른 제품들과 마찬가지로, 디바이스 센트럴은 사람들이 멋진 환경을 만드는데 정말 도움이 되지만, 이번에는 모바일 세계에 도움을 준다. 필자의 디바이스 센트럴 갤러리에서는 새로운 프로그램을 캡처한 몇 가지 화면을 볼 수 있다.


출처 :  Ryan Stewart ( ZDNet )

    

설정

트랙백

댓글

어도비 25년 역사상 가장 방대한 SW제품군 발표

Miscellaneous/Etc 2007. 3. 30. 01:31
어도비시스템즈(http://www.adobe.com)는 모든 크리에이티브 영역에서 활용되는 업계 표준 디자인 및 개발 통합 솔루션인 ‘어도비 크리에이티브 스위트 3(Adobe Creative Suite 3, 이하 어도비 CS 3)’ 제품군을 출시한다고 밝혔다.

이번 어도비 CS 3는 어도비와 매크로미디어의 합병으로 인한 최초의 기술 통합으로 인쇄, 웹, 모바일, 인터랙티브, 영상 등 모든 크리에이티브의 영역에 걸쳐 디자이너 및 개발자에게 혁신적인 솔루션을 제공한다.

발표되는 이번 신제품은 ▲어도비 CS 3 디자인 프리미엄 에디션 및 스탠다드 에디션 ▲어도비 CS 3 웹 프리미엄 에디션 및 스탠다드 에디션 ▲어도비 CS 3 프로덕션 프리미엄 에디션 ▲ 어도비 CS 마스터 콜렉션 등 총 6개 에디션으로 이루어져 있다.

어도비 CS 3 디자인 프리미엄 에디션 및 스탠다드 에디션
인쇄, 웹, 인터랙티브 및 모바일 디자인 등 크리에이티브 작업을 위한 필수적인 툴 킷이다. 페이지 레이아웃, 이미지 편집, 일러스트레이션, PDF 워크플로우가 모두 통합되어 출판, 웹사이트, 풍부한 사용자 경험 및 모바일 컨텐츠를 하나의 환경에서 효율적으로 작업할 수 있다.

기존의 CS2 버전에서는 오프라인 컨텐츠 제작에 초점되어 있는 반면, 새로운CS3버전에서는 매크로미디어의 플래시, 드림위버가 추가로 통합됨으로써 오프라인 컨텐츠를 온라인으로 쉽게 퍼블리싱할 수 있게 되었다. 이로써 CS3 디자인 프리미엄 에디션은 크로스 미디어 디자인 전문가를 위한 완벽한 솔루션으로, 기존 출판 및 디자인 프로세스에 대변화를 가져올 것으로 예상된다.

어도비 CS3 디자인 프리미엄 에디션에는 어도비 인디자인 CS3, 어도비 포토샵 CS3 익스텐디드, 어도비 일러스트레이터 CS3, 어도비 플래시 CS3 프로페셔널, 어도비 드림위버 CS3가 포함되며, 추가적으로 어도비 애크로뱃 8 프로페셔널이 포함된다.

새롭게 강화된 인디자인 CS3은 반복적인 레이아웃 작업을 쉽고 빠르게 처리할 수 있도록 도와 주며, 일러스트레이터의 라이브컬러 기능은 디자이너들이 빠르고 직관적으로 색을 배합하고 저장하고 다양한 실험을 할 수 있게 한다. 이 외에도 포토샵 CS 3 익스텐디드를 통해 이미지 영역 선택, 이미지 합성, 필터 적용 등의 일상적인 이미지 편집 작업이 더 빠르고 유연하게 진행될 수 있게 된다. 또한 플래시 CS3 프로페셔널과 통합되어 디자이너와 개발자들이 포토샵과 일러스트레이터에서 작업한 파일을 그대로 플래시로 보낼 수 있게 되어 작업 시간을 크게 단축할 수 있게 된다. 이 외에도 드림위버 CS3를 통해 디자이너들이 포토샵 파일을 웹 레이아웃에 복사해서 붙일 때 웹을 자동적으로 최적화해 준다.

어도비의 존 로이아코노(John Loiacono) 크리에이티브 솔루션 수석 부사장은 “디자인 전문가들은 어도비와 매크로미디어 툴의 새로운 차원의 통합을 경험하게 될 것"이라며 “플래시와 드림위버의 추가로 오늘날 크리에이티브의 중심이 되는 인터랙티브한 디자인 영역으로 확대될 수 있는 계기를 마련함과 동시에 혁신적으로 변화된 디자인 환경을 제공하게 될 것이다”고 밝혔다.

어도비 CS 3 웹 프리미엄 에디션 및 스탠다드 에디션
웹 디자이너 및 웹 개발자들이 손쉽게 웹사이트와 애플리케이션, 게임, 프레젠테이션, 모바일 컨텐츠 등을 디자인하고, 개발하고, 관리할 수 있게 해준다. 특히, 인터랙티브한 웹을 개발하고 디자인하고자 하는 개발자 및 디자이너를 위한 최적의 툴이다.

어도비 CS 3 웹 프리미엄 에디션에는 어도비 드림위버 CS3, 어도비 플래시 CS3 프로페셔널, 어도비 파이어웍스 CS3, 어도비 컨트리뷰트 CS3와 함께 어도비 포토샵 CS3 익스텐디드, 어도비 일러스트레이터 CS3, 어도비 애크로뱃 8 프로페셔널 등이 포함되어 있다.

웹 전문가들은 포토샵과 일러스트레이터 파일을 바로 플래시 및 파이어웍스에서 사용할 수 있게 되었다. 이에 따라 웹 페이지 관리가 편해지며, 웹 페이지의 이미지를 일관되게 유지하기가 더욱 쉬워진다. 또한 파이어웍스 CS3의 새로운 계층구조화 기능을 통해 복잡한 웹 페이지 모델을 바로 만들 수 있으며, 하나의 PNG 파일로 저장할 수 있다.

어도비 CS3 웹 에디션은 모든 웹 브라우저, 운영체제, 모바일 기기 등을 통해 일관된 경험을 할 수 있게 해준다. 드림위버 CS3는 Ajax를 위한 Spary 프레임워크를 통합해 RIA 구현을 더욱 쉽게 해 준다. 새로운 CSS 레이아웃은 사용화된 웹 브라우저 호환성 체크를 가능하게 하고 다양한 웹 브라우저를 통해 CSS기반 웹사이트를 테스팅할 수 있게 한다.

어도비의 존 로이아코노 부사장은 "어도비 CS3 웹 에디션은 웹 상에서의 크리에이티브한 비전 실현을 위해 디자이너와 개발자의 모든 작업 영역에서 활용할 수 있는 필수적인 솔루션을 제공한다" 라며 "드림위버, 플래시, 파이어웍스, 컨트리뷰트에 포토샵, 일러스트레이터와 같은 주요 디자인 툴을 통합하여 웹 디자인 및 개발을 놀라울 정도로 단순화할 수 있다" 라고 밝혔다.

어도비 CS 3 프로덕션 프리미엄 에디션
영상 전문가와 리치 미디어 전문가를 위한 포스트 프로덕션 솔루션이다. 영상, 방송, 웹, DVD, 모바일 디바이스 등을 위한 혁신적인 결과물을 창조하고 전달할 수 있도록 통합된 작업 환경을 제공한다. 프로덕션 프리미엄 에디션은 전체 캡쳐에서부터 포스트 프로덕션 워크플로우 전반에 필요한 모든 애플리케이션을 통합한 것으로, 작업 시간을 대폭 줄여준다.

어도비 CS 3 프로덕션 프리미엄 에디션에는 어도비 애프터 이펙트 CS3 프로페셔널, 어도비 프리미어 프로 CS3, 어도비 앙코르 CS3, 어도비 포토샵 CS3 익스텐디드, 어도비 일러스트레이터 CS3, 어도비 플래시 CS3 프로페셔널, 어도비 사운드부스 CS3등이 포함된다.

어도비 프리미어 프로 CS3는 ‘타임 리매핑’이라는 신기능을 통해 슬로 모션을 향상시키고, 다양한 속도 효과를 제공한다. 애프터 이펙트 CS3는 ‘쉐이프 레이어’ 기능을 통해 벡터 쉐이프를 그리고 애니메이션할 수 있게 해 주고, ‘퍼핏’ 기능을 통해 2D 이미지들을 움직이게 한다.

또한, 브레인스토밍 툴을 통해 애니메이션에 변화를 조금씩 주도록 생성하고 미리 볼 수 있게 한다. 오디오 기능은 어도비 사운드부스 CS3를 통해 전문가 수준의 사운드트랙을 개발할 수 있다. 어도비 플래시 CS3 프로페셔널을 통해서 애프터 이펙트 및 앙코르에서 웹을 통해 작업을 바로 보여줄 수 있다.

그리고 ‘다이나믹 링크’를 통해 프리미어 프로 CS3, 애프터 이펙트 CS3, 앙코르 DVD CS3에서 작업한 미디어를 서로 교환할 때에 렌더링을 하지 않아도 되게 되었다. 또한 이번 CS3 프로덕션 프리미엄은 어도비 온로케이션 CS3는 바로 디스크로 녹음이 가능하며 모니터링 기능을 제공한다. 이는 현장에서 고화질의 촬영을 하는데 큰 도움을 줄 것이다. 또한, 프리미어 프로 CS3는 HD, SD, HDV 형식을 모두 지원한다. 이 외에도 어도비 미디어 엔코더를 통해 모바일폰, 디바이스, 아이팟 등의 다양한 기기에서 촬영한 비디오를 송출 할 수 있다.

어도비의 존 로이아코노 부사장은 “어도비 CS 3 프로덕션 프리미엄의 타겟 시장인 비디오 편집 시장이 점차 확대되어 가고 있다”며 “특히, 인터넷을 통해 대량의 비디오 유통이 이루어지면서 플래시 기술이 표준으로 자리 잡아 가고 있다. 이는 TV의 온라인 방송이나 유투브(YouTube), 마이스페이스(MySpace)로 입증되고 있다. 어도비의 프로덕션 에디션은 최첨단 비디오 및 리치 미디어 작업을 위해 최적의 솔루션이 될 것이다.”고 밝혔다.

이 제품은 중순경 발표 예정이다.

어도비 CS 마스터 콜렉션
총 12개의 개별 애플리케이션을 하나로 통합한 콜렉션이다. 프린트, 웹, 모바일, 비디오, 필름 등 모든 미디어를 통해 디자인 및 개발 작업을 할 수 있도록 해준다.

어도비의 최고 경영자인 브루스 치즌(Bruce Chizen)은 “어도비와 매크로미디어의 강력한 기술을 통합한 이번 신제품은 디자이너와 개발자 사이의 간격을 메워주는 작업 효율성을 극대화 하는데 중점을 두었다”며 “새로운 워크플로우를 통해 더욱 풍부한 컨텐트 개발과 효율적인 협업이 가능해질 것”이라고 밝혔다.

한편 어도비 CS 3 제품군에 있는 12개의 소프트웨어는 개별적으로도 구매 가능하다. 환경으로는 파워PC, 인텔 기반 맥킨토시 등에서 모두 사용 가능하며, 마이크로소프트 윈도우 XP, 윈도우 비스타를 지원한다. 특히 고객들은 인텔 기반의 매킨토시 시스템 및 최신 윈도우 하드웨어에서 CS 3의 한층 향상된 성능 및 속도를 체험할 수 있다.

발표하는 이 시점 이후, 이전 버전(Creative Suite2와 Studio8 및 관련 단품)을 구매하는 고객에 한해 한정 기간 동안 무상 업그레이드 혜택을 제공한다. 특히 기존에는 포함되어 있지 않은 제품들이 추가적으로 제공되어 한층 업그레이드된 경험을 누릴 수 있다. 자세한 내용은 고객지원센터(563-2555)로 문의하면 된다.

한편, 어도비 CS 3의 한글판은 올해 중순경 출시 예정이다.

출처 : 김효정 기자   ( ZDNet Korea )
    

설정

트랙백

댓글

루이까또즈 브랜드 사이트

Project/Web 2007. 3. 27. 00:48
사용자 삽입 이미지

루이까또즈 브랜드 사이트의 장점
루이까또즈는 사용자 중심으로 설계하려고 노력했다.
 
사용자 삽입 이미지

기본적으로 메뉴 구조라고 한다면 위와 같이 단일 메뉴, 순차적 메뉴, 트리 메뉴, 네트웍 메뉴 등으로 나눌 수 있을 것이다. 각각 특정 메뉴로 접근하는 방식에 차이가 있다. 웹은 기본적으로 이러한 여러 가지 메뉴 구조를 복합적으로 사용하고 있는데 루이까또즈는 이러한 메뉴구조를 좀더 다른 방식으로 접근한 형태이다.

루이까또즈의 경우는 기본적으로 트리 메뉴구조를 가지고 있으며 네트웍 메뉴 구조로 접근이 가능하다. 이를 다른 형태로 표현하면 아래와 같은 형태로, 사용자는 원하는 특정 페이지로 다이렉트 접근이 가능하다.
 
사용자 삽입 이미지

이런 형태는 자칫하면 사용자가 현재의 위치를 파악하지 못하는 문제점이 발생할 수 있는데 루이까또즈는 이러한 문제점을 해결하기 위해서 사용자가 새로운 페이지로 접근을 시도할 때 하나의 규칙을 만들었다.
 
사용자 삽입 이미지

SiteMap을 보면 1뎁스와 2뎁스 모두를 세로 직렬로 배치하여 현재 위치에서 원하는 페이지로 이동할 때 컨텐츠들은 위에서부터 아래로 정렬되어 있다는 것을 사용자가 학습할 수 있도록 모션을 적용하였다.

예를 들면 현재 AD CAMPAIGN에서 HISTORY 메뉴로 이동시 현재 컨텐츠는 위로 올라가고 HISTORY 컨텐츠는 아래에서 위로 올라오게 된다. 반면 HISTORY에서 WEBZINE 페이지로 이동시에는 현재 페이지는 아래로 내려가고 WEBZINE 페이지는 위에서 아래로 내려오게 함으로써 사용자가 현재 위치에서 원하는 위치로 이동할 때, 현재의 위치를 파악할 수 있도록 하였다.

로딩바의 형태도 이러한 규칙의 일환으로 위에서 내려오는 컨텐츠의 로딩바는 아래에서 위로, 아래에서 올라오는 컨텐츠의 로딩바는 위에서 아래로 채워지게 된다.

루이까또즈에서 가장 중요한 컨텐츠인 Collection은 로딩의 순서가 왼쪽에서 오른쪽으로 이루어지며 전체 로딩이 어느 정도 진행되었는지를 사용자가 알 수 있도록 메뉴 아래에 상태를 표시하고, 사용자가 특정 메뉴의 이미지를 먼저 보기위해 접근을 시도하면 해당 이미지를 개별적으로 로딩함으로써 사용성을 높이고자 했다.

루이까또즈 브랜드 사이트의 구조는 아래와 같은 형태로 사용자가 인지할 수 있을 것이다.
 
사용자 삽입 이미지


사이트의 단점
루이까또즈는 사용자 중심의 UI로 접근을 하였기 때문에 페이지 전환시 획일적인 모션 적용으로 인하여 다소 각 컨텐츠의 재미요소가 미흡한 단점이 있다. 이는 각 페이지로 넘어갔을 때 그 페이지에 고유의 모션을 통해서 어느 정도 해소할 수는 있겠으나 그런 과정에서 기존의 컨셉트에 부합되지 않는 문제점도 발생할 것으로 예상된다.

* 정해진 일정으로 빠듯하게 작업을 진행하였으나 클라이언트의 자료수급이 제때 이루어지지 않아 오픈 시일이 연기되었고, 클라이언트의 개인적인 취향에 따른 수정과 일관성 없는 요구사항으로 인하여 전체적인 컨셉트를 훼손하는 결과를 낳았던 것 같다.

항상 이런 부분들은 아쉬움을 남기지만 갑과 을의 관계에서 진행되는 프로젝트이므로 어쩔 수 없는 아쉬움이 아닌가 싶다.

http://www.louisquatorze.co.kr/

    

설정

트랙백

댓글

토끼 인형을 살려주세요...

Design/Web 2007. 3. 19. 02:05
네덜란드의 한 웹에이전시 홈페이지다. 홈페이지에 많은 정보를 담지 않아서 무엇을 하는 회사인지는 쉽게 알기가 어려운 사이트라는 생각이었다. 그러나 미션을 완료하고 보니 이 회사가 무엇을 하는 회사인지가 궁금해진다.

그래서 사이트의 이곳 저곳을 뒤적거려 보고 꼼꼼히 훑어 보는 와중에 이 회사가 어떤 회사이며 무엇을 하는 회사인지 알 수 있었다.

참 재미있는 사이트다. 하지만 절대 가볍지 않은 메시지를 전달하고 있는 듯하다. 자사에 대한 많은 정보를 제공하지 않는 대신, 이 회사가 어떠한 마인드를 갖고 무엇을 하는 회사인지는 충분히 알 수 있도록 제작된 듯 하다. 그것도 재미있게 사용자로 하여금 이 회사의 마인드에 동참할 수 있도록 확실한 메시지를 전달을 하고 있다.

적어도 웹에이전시라고 하면 그 회사가 무엇을 하는 회사인지를 우리는 알고 있다. 사용자가 특정 웹에이전시의 홈페이지를 방문하는 목적은 그 회사가 무엇을 하는 회사인지를 알기 위해 방문하는 것이 아니라 그 회사가 어떠한 생각을 가지고 있으며, 어떤 클라이언트와 무엇을 만들고 있는지를 알고 싶어서 일 것이다.

서비스의 본질이 무엇인가를 생각하게 하는 사이트다.


http://www.10mg.nl/

사용자 삽입 이미지
당신에게 주어진 시간은 단 1분,
1분 이내에 당신의 장난으로 숨을 쉬지 않는 불쌍한 토끼 인형을 살려야 한다...


사용자 삽입 이미지
전기 충격 3회 실시... 심장 박동수는 점점 증가하고...


사용자 삽입 이미지
시간이 없다. 수술에 들어간다. 일단 면도기로 배 부위의 털을 깎아주고 팬으로 오픈할 곳을 그리고 메스로 배를 가른다. 대장과 소장을 제치면 HandCursor가 보이고 그것을 끄집어 낸다.


사용자 삽입 이미지
10mg 알약을 오픈한 배에 넣으면 살게 되는데...


사용자 삽입 이미지
1분안에 해결하지 못한 토끼는 죽기도 하고...


사용자 삽입 이미지
살아서 행복해 하기도 한다.






    

설정

트랙백

댓글

trace 예찬론

Programming/Etc 2007. 3. 9. 00:48
action script를 코딩하다 보면 중간 중간 내가 작성하는 코드가 syntax error가 없는지 수시로 체크를 하게 되는데 그 단위는 코드 100줄을 넘지 못한다. 코딩을 하면서 중간에 딴 생각을 하다가 엉뚱한 방향으로 흐르는 경우도 있고 손가락의 강약 조절과 위치 파악을 제대로 하지 못한 손가락의 잘못도 있다.(결코 내 잘못 아니란다 쿠쿠)

대부분 syntax error로 수정이 가능한 것들이나 가끔은 overflow의 문제로 한참을 헤매는 경우도 종종 있다. Overflow의 경우는 컴파일러가 정확히 어느 위치에서 overflow가 발생했는지를 알려주지 않는 과계로 중간 체크를 하지 않고 코드를 길게 늘리다 보면 쉽게 문제가 되는 부분을 찾기가 어려울 경우가 있다.

더군다나 overflow가 발생했다는(플래시는 255번 이상 스택이 쌓이면 overflow가 발생한다.) 것을 output 패널 창에 보여주면 그나마 다행이지만 컴파일러가 한참을 계산하고서야 문제를 알려줄 때면 가뜩이나 바쁜 와중에 뒷골이 땡긴다.

이런 문제는 반복문에서의 조건문이 무한하거나 undefined일 경우 흔히 발생하게 된다. 가끔 사이트를 돌아다니다 보면 이런 문제로 브라우저를 종료해야 되는 경우가 종종 보이는데 외부에서 xml 데이터를 받아와서 처리해야하는 구문이 있다면 xml이 로드된 시점에서 처리해야 하는데 그것을 간과한 듯 하다.

이런 문제를 미연에 방지하기 위해서는 수시로 단위별로 체크를 해야 한다. 어느 언어나 기본적으로 특정 값을 확인 할 수 있도록 print 내장 메소드를 제공하는데 플래시도 trace라는 구문을 제공한다. 언제나 감사함을 느끼는 놈이다.

개인적으로 생각해 볼 때 논리적인 error를 잡아내는 데는 trace 하나면 충분하다. 중간 중간 확인을 하고 진행한 코드라고 했을 때 문제가 발생하지 않은 시점과 문제가 발생한 시점을 파악하고 그 문제가 발생했던 부분을 훑어봐도 어디가 문제인지를 모를 때는 최초 문제가 발생한 부분의 상위부터 단계별로 trace로 문제가 될만한 변수들을 확인하고 넘어가면 어느 시점에서는 문제의 변수를 잡아낼 수 있다.

가끔 프로그래밍에 발을 들여놓은 분들을 보면 이러한 확인 절차 없이 무턱대고 코드를 작성하고 한꺼번에 컴파일을 하는 경향이 있는데, 이럴 경우에는 문제가 발생할 만한 곳을 찾기란 쉽지가 않다. 문제가 없는 부분과 문제가 발생한 부분을 쉽게 파악하지 못하기 때문이다.

물론 oop 개념의 프로그래밍을 한다면 이러한 문제를 파악하는데도 많은 도움을 받게 된다. 하나의 독립된 class로 문제를 최대한 잘게 쪼개놓으면 문제가 된 class를 쉽게 알아 낼 수가 있기 때문이다. 플래시 액션스크립트도 2.0으로 넘어오면서 어느 정도 oop개념을 도입했지만 실무에서 완벽한 oop 프로그래밍을 하기에는 쉽지가 않다. Oop 개념을 완전하게 이해하지 못한 이유도 있지만 큰 프로젝트가 아닌 경우에는 사실 그러한 개발 노력보다 시간이 더 중요한 경우가 허다하게 발생하기 때문이기도 하다.

그래서 나 또한 실무에서는 oop반 막무가내 코드 반을 섞어서 사용하고 있고 개인적인 놀이나 작업을 할 때는 되도록 oop에 신경을 쓴다. 물론 개인적인 놀이에서 그러한 것을 하다 보면 실무의 실질적인 프로젝트에서도 기억을 되살려 사용하기도 하니 그러한 놀이를 통해서 점점 oop의 필요성과 유용성을 인정하게 된다.

이야기를 하다 보니 이야기가 엉뚱하게 흐르고 있다. 이쯤에서 trace 한번 찍어보자.

var 엉뚱한변수:String = “#@$#@$@#@$#”;
trace(“엉뚱하게 이야기가 흐른 변수 = ” + 엉뚱한변수);

액션 스크립트를 떠나 존재하는 모든 프로그래밍 언어에서 print 구문이 없었다면 아마도 지금도 어셈블리어로 코딩을 하고 있을지도 모르겠다. 생각해 보니 프로그래밍도 커뮤니케이션이다.

trace(“나 여깄어…너 거기있니”);
trace(“나 여기있고 너 거기있구나”);

trace를 사랑합시다. ^^
    

설정

트랙백

댓글

플래시 컨텐츠의 최적화

Design/Web 2007. 3. 5. 22:41
최적화는 상당히 어려운 부분이다. 사실 어렵다기 보다는 아는 부분도 실수로 보지 못하는 경우도 있고, 문제를 문제로 인식하지 못하는 과정에서 발생하는 경우도 많다. 플래시를 천직으로 생각하고, 플래시 툴이 항상 컴퓨터의 메모리에 상주해 있는 본인도 이러한 문제에 봉착할 때가 한 두 번이 아니다.

요즘은 워낙 컴퓨터 사양이 좋아져서 최적화의 유용성이 많이 감소되기는 하였으나 작업 과정에서 이런 최적화의 노력이 몸에 배어 있지 않으면 개발이 완료되는 시점에서 자신의 잘못 보다도 디자인의 묵직함을 탓하는 경우가 많다. 물론 우리나라의 웹 컨텐츠의 화려함을 보면 과연 컴퓨터가 온전할까 하는 두려움마저 드는 사이트들도 상당히 존재한다. 나 또한 그러한 사이트를 만들기 위해 없는 일정 만들어가며 동참한 것도 사실이다. 이러한 문제는 항상 바쁜 클라이언트의 명령에 서비스하는 차원에서 이루어 지는 경우도 있지만 그러한 볼멘소리에 숨겨놓은 자신의 귀차니즘이 더욱 큰 영향을 주는 경우도 있다.

하지만 그러한 노력을 하지 못하게 만드는 불가피한 현실도 문제다. 우리나라의 클라이언트를 보면 더 화려하고, 더 보기 좋고, 더 강렬한 사이트를 요구하는 경우가 많다. 그러한 요구를 맞추기 위해서 노력하다 보면 최적화는 다른 프로젝트에 밀려서 잊혀지고 만다. 서비스업이다 보니 의뢰하는 클라이언트의 눈높이에 맞출 수 밖에 없는 것이 현실지만 무엇보다도 웹을 개발하는 전문가로서 전문의식과 지식을 갖출 필요가 있다.

나는 웹에이전시에서 근무한 경력은 화려하지 않다. 그러다 보니 기획, 디자인, 컨텐츠, 개발, 코딩과 관련하여 총체적으로 회사 입장의 이익 창출을 위한 객관적인 판단이 미흡한 것이 사실이다. 그러나 단기적인 이익을 위한 위기 모면적 프로젝트와 그것을 생산하는 회사는 발전 가능성은 희박하다는 생각이다.

클라이언트와 직접적으로 커뮤니케이션을 하는 기획과 디자인의 경우에는 실질적으로 프로젝트를 진행하는 실무진의 기본적인 지식과 판단에 서서, 전문자로서의 커뮤니케이션이 가능해야 한다고 본다. 전문 지식을 바탕으로 하지 않은 커뮤니케이션은 자칫 클라이언트의 말 전달자가 될 수도 있고, 비 전문가의 개인적 취향에 따라 대외비적인 프로젝트로 전락할 수도 있을 것이다. 이러한 문제점을 지향하기 위해서는 개인적인 자기개발도 중요하겠으나 팀과 조직 구성원들의 스스럼 없는 커뮤니케이션과 의견 존중이 밑 바탕에 깔려 있어야 할 것이다.

나는 어떠한 경우에도 웹의 기본 정신은 훼손되어서는 안 된다고 생각한다. 웹의 모든 부분은 커뮤니케이션이다. 웹 == 커뮤니케이션이라는 정의는 항상 머리 속에 넣어두고 살아야 한다. 사이트가 아무리 화려하고 많은 컨텐츠를 가지고 있어도 궁극적으로 그것을 사용자가 학습하고 원하는 정보를 찾는데 어려움을 느낀다면 그 웹사이트는 이미 죽은 사이트다.

예전에는 얼마나 화려하고, 얼마나 많은 기능을 제공하는 가와 같은 양적인 측면 위주였다면, 앞으로는 질적인 측면과 감성적인 측면을 더 중요시 해야 한다. 이러한 면에서 Web 2.0이라는 트랜드가 많은 부분에서 변화를 꾀하고 있고 덕분에 UX(User Experience)는 예전보다 사용자에게 상당히 많은 접근을 하고 있다.

그러나 우리나라의 Web 2.0은 껍데기에 불과하다는 이야기를 하고 싶다. Web 2.0이라는 개념은 화려한 테크닉을 이야기 하는 것이 아니라 사용자 경험에 따른 좀더 편하고 쉽게 다가갈 수 있는 웹 가이드일 것이다. 가끔 보면 그러한 기본 정신을 잊고 엉뚱한 곳에서 헤매는 경우를 많이 보게 된다.

나는 웹에 종사하고 있기 때문에 임베디드 분야는 잘 알지는 못하지만 최적화의 요구가 필수적이라는 것은 간접적인 경험을 통해서 익히 들어왔다. 요즘처럼 수천 MB의 메모리를 갖춘 PC에서 프로그램을 개발하는 사람들에게는 수십 KB의 메모리에서 프로그램을 개발해야 된다는 것이 상당한 압박으로 느껴질 수 있을 것이다. 이러한 하드웨어적인 환경의 제약으로 인해 컴파일러 수준의 코드 최적화는 물론이고 소스 코드 수준에서도 최적화된 코드를 작성할 필요가 있을 것이다.

일반적으로 컴파일러가 제공하는 최적화의 종류는 크기 최적화와 속도 최적화의 두 부류로 나눠볼 수 있을 것이다. 임베디드 분야에서는 이 중에 크기 최적화를 통해 작은 크기의 실행 파일을 생성하는 것이 더 유리할 것으로 본다. 속도 향상은 알고리즘의 개선이나 소스 코드 튜닝을 통해 상당 부분 개선할 수 있지만 실행 파일의 크기를 소스 코드 레벨에서 수동으로 줄이기는 사실상 어려움이 있을 것이다. 물론 이런 것들 또한 지금의 발전과 같이 과거의 이야기가 될 수도 있으나 먼 미래에도 최적화에 대한 요구는 계속 있을 수 밖에 없을 것이다.

내가 만약 당장 임베디드 시스템에 필요한 컨텐츠와 UI를 제작한다면 그 코드를 담는 하드웨어의 무게보다 무거운 프로그램이 탄생하지 않을까 싶다. 웹에서 임베디드 분야와 같은 최적화를 가지고 갈 필요는 없을 것이다. 웹은 웹에서 충분히 사용할 수 있는 기술과 방법을 최대한 활용하여 보다 사용자 중심의 사이트를 만들면 된다. 하지만 그러한 기술과 방법에 치우쳐서 최적화를 소홀히 한다면 자신이 만든 프로그램으로 조종하는 전투기 안에 있어봐야 할 것이다.
    

설정

트랙백

댓글

스킨 배경 플래시

Design/Web 2007. 3. 5. 05:08
안녕하세요...

현재 스킨에 사용하고 있는 배경 플래시의 무비클립 오브젝트를 변경한 bg.swf 파일을 올립니다.
사용하고 싶으신 분은 받아다가 사용하세요

사용 방법은 images/ 폴더 안에 파일 업로드 하시면 됩니다. 파일은 기존의 bg.swf 파일과 같으나 나타나는 무비클립 오브젝트의 모양을 변경한 것이니 첨부하는 bg.swf 파일만 업로드 하시면 됩니다.
감사합니다.


    

설정

트랙백

댓글

웹브라우저에 대한 생각...

Design/Web 2007. 3. 4. 04:30
사이트를 만들 때면 사용자의 컴퓨터 해상도에 대한 고민을 하게 되는데 요즘 들어 와이드 모니터들이 많이 늘어나고 기존의 1024x768 사이즈가 표준이 되던 시대도 이제는 어느 정도 지난 시기인 듯 싶다. 노트북만 하더라도 대부분 와이드 모니터를 사용하고 있고 출시되는 lcd 모니터들을 봐도 그러하다.

사이트의 완료 단계에서 가장 마지막에 사투를 벌이는 퍼블리시 관련 팀들은 이런 부분에 대한 고민을 하지 않을 수 없다. 해상도 뿐만이 아니라 브라우저의 종류에 따라서도 표준에 따른 결과 물을 만들어야 하는데, 우리나라의 경우는 90%가 넘는 사용자들이 IE를 사용하고 있기 때문에 IE에 맞춰서 작업을 진행하면 큰 무리는 없으나 글로벌한 사이트의 경우에는 다른 부라우저도 고려해야 한다.

국내에서도 IE가 7.0으로 버전업을 하면서 급속도로 파이어폭스를 사용하는 사용자들이 늘어나고 있는 추세인 듯 하다. 현재만 하더라도 10% 가량의 사용자들이 IE가 아닌 타 브라우저를 사용하고 있다고 하니, IE에만 맞춰서 작업한다는 것은 사이트의 퀄리티를 떨어뜨리는 결과를 낳게 된다.

나 도 얼마 전부터 파이어폭스를 사용하게 되었는데 그 계기는 블로그를 디자인 하면서부터 이다. IE에서 제대로 나오던 것이 파이어폭스에서는 문제를 만들고 있는 것을 보며 파이어폭스의 문제로만 생각하고 있었다. 그러나 가만히 자료를 찾아보고 문제가 되는 부분들을 수정하다 보니 그 동안 우리가 너무 IE의 표준 같지 않은 표준에 국한하여 생활하다 보니 생겨난 문제라는 것을 알게 되었다.

지 금의 브라우저들을 보면 양극화 되어 있다. IE인 브라우저와 IE가 아닌 브라우저, 이는 다시 생각해보면 비표준과 표준으로 생각해 볼 수가 있다. IE는 그 동안 독점하는 과정에서 표준에 반하는 기술을 표준으로 굳히려는 노력을 했을 뿐 사용자의 눈높이에 맞는 개발을 하지 못했다. 이로 인해서 새로 출시한 IE 7.0을 보면 어느 브라우저와 너무도 흡사하다는 생각을 하지 않을 수 없다.

또한 브라우징의 속도를 보면 차이를 눈으로 확인할 정도이니 IE 외의 다른 브라우저를 접해보지 않은 상태라면 모르나 접해본 사용자라면 상황이 다를 것이라는 생각이 든다. 물론 지금은 국내에서 대부분 IE를 사용하고 있고 IE에 국한된 표준을 따르는 사이트가 많기 때문에 사용자의 불편으로 쉽게 다른 브라우저로 넘어오지 못하는 사용자도 있는 것이 현실이다. 그러나 이러한 문제의 전환은 바로 지금도 진행되고 있다.  마이크로소프트사에서 브라우저에 대한 개발 노력이 미흡한 이상, 앞으로 브라우저의 대세는 서서히 기울 수 밖에 없을 것이다.

이미 온라인과 오프라인의 어플리케이션 경계선은 무너지고 있다. 이런 시점에서 웹브라우저에 대한 사용자의 눈높이는 높아질 수 밖에 없고 그 눈 높이에 맞추기 위해서는 마이크로소프트사도 지금의 안주에서 벗어나지 않으면 앞으로의 미래는 없을 것이다. 

다수의 사용자가 IE를 사용하는 것이 분명하고 그것에 맞춰서 사이트 작업이 진행되어야 하는 것은 당연한 결과다. 그러나 이제는 사용자가 그러한 좁은 문에서 밖을 내다볼 시기라고 생각된다.



    

설정

트랙백

댓글

라이브플렉스

Project/Web 2007. 3. 4. 03:27
사용자 삽입 이미지


작년 말쯤에 오픈란 라이브 플렉스, 화면에 나타난 오브젝트들이 스테이지 사이즈에 따라 유동적으로 좌표를 찾아 가도록 만들었다.

http://www.liveplex.co.kr/


    

설정

트랙백

댓글

Dcaland.com - 사진 갤러리사이트

Project/Web 2007. 3. 3. 03:30
Dcaland.com 사진 갤러리 사이트

이 사이트는 개인적인 취미인 디카 생활을 하면서 모아온 사진을 웹에 올리고자 만들었던 사이트다 이미지를 클릭했을 때 사진이 나타나는 모션을 만들고 그것을 어떻게 활용해 볼 방법이 없을 까 해서 만들게 되었다.

플래시8에서 추가된 FileReference 클래스를 이용하여 이미지 업로드를 지원했으며 모든 구성요소들이 현재 화면의 크기에 따라 유기적으로 위치를 잡고 사이즈를 조정하게 만들었다.

이 사이트 또한 나에게 여러가지 재미를 준 고마운 녀석인데 만들고 나서 언제나 그랬듯이 관리가 안되었던 것 같다. 추가적인 기능과 보완할 것들을 정리하고 수정해야 하는데 회사일이 그렇다보니...

http://www.dcaland.com
사용자 삽입 이미지

    

설정

트랙백

댓글

N-collection.com 개인 사이트

Project/Web 2007. 3. 3. 03:18
2005년 연말쯤에 만들었던 개인 홈페이지

이 사이트는 개인적인 포트폴리오 관리와 사진 갤러리를 통해 취미 활동을 하기 위해 제작하였다. 전체적으로 심플한 디자인과 CPU와 용량에 신경을 썼지만 관리가 제대로 되지 않았다.

항상 개인 홈페이지를 만들때면 잘 가꾸어 나가겠다고 하지만 회사 일들과 개인적인 생활을 하다보면 관리가 제대로 되지 않는다. 그래서 지금은 그냥 사용하기 편하고 유지 관리가 편리한 블로그를 활용할 생각이다.

이 사이트의 마지막 메뉴에는 탱크 게임을 만들어 놨는데 플래시툴을 개발했던 매크로미디어의 마지막으로 진행한(지금은 Adobe가 인수) MAX 2005 Korea에서 강연을 했던 스피커가 만든 게임을 보고 나름대로 비슷하게 만들어 봤었다.

http://dicaland.cafe24.com/nc_project/main.html
사용자 삽입 이미지



    

설정

트랙백

댓글

Adatto 사이트

Project/Web 2007. 3. 3. 02:50
2005년 9월 5일 오픈한 아다또 사이트

이 사이트는 웹에이전시에 근무한지 6개월이 지난 시점에서 처음 혼자서 플래시 부분을 담당하여 작업했던 사이트다. 지금 보면 여러가지로 미흡한 부분이 많이 보이지만 3일도 안되는 작업 일정동안 나름대로 노력했던 기억이다. 이 사이트는 월간 w.e.b 2005년 10월호에 Site of the Month로 선정되기도 하여 나에게는 의미있는 사이트가 되었다.


http://www.adattorelax.com/main.html






사용자 삽입 이미지


    

설정

트랙백

댓글

어도비, 포토샵을 온라인으로

Design/Etc 2007. 3. 2. 16:22
사용자 삽입 이미지

(Bruce Chizen)

구글을 비롯한 기타 경쟁자들보다 앞서나가기 위한 한 방법으로, 「어도비 시스템즈」(Adobe Systems)는 6개월 내에, 「포토샵 이미지 편집 애플리케이션」(Photoshop image-editing application)을 온라인 버전으로 출시할 것이라고 어도비의 CEO가 지난 화요일에 발표했다.


이번에 계획된 온라인 서비스는 기존의 제품을 보완하여, 광고를 지원하는 온라인 서비스를 제공하기 위한 목적을 가지고 있고, 이와 더불어 회사가 조금 더 소비자 시장에 가까이 다가갈 수 있도록 하나의 교두보를 마련하기 위한 목적 또한 가지고 있다고 어도비 CEO 브루스 시젠(Bruce Chizen)은 CNET News.com와의 인터뷰에서 이와 같이 밝혔다.

시젠은 웹 기반 비디오 편집 툴인 「어도비 리믹스」(Adobe Remix)를 미디어 공유 사이트 「포토버켓」(PhotoBucket)을 통해서 제공함으로써, 이번 계획을 시작했다고 말했다.

어도비 리믹스처럼 온라인 포토샵 서비스 또한 무료로 제공될 예정이고, 「포토샵」(Photoshop), 그리고 「포토샵 엘레멘츠」(Photoshop Elements) 등, 기존의 고성능 이미지 편집 툴들 내의 기본 기능만 구현할 수 있는 정도로 제공될 것이라고 밝혔다. 시젠은 광고수입을 통해 이러한 포토샵 서비스에 대한 수익성을 찾을 것이라고 밝혔다.

“이러한 시도는 어도비에게 매우 새로운 것이다. 또 온라인 서비스 부분은 우리가 상당히 민감하게 주시하고 있던 부분이었는데, 구글 등과 같은 대형 업체들이 다른 항목/분야에서 이와 같은 온라인 서비스들을 속속들이 제공하기 시작했기 때문이다. 우리는 적어도 어도비의 전문 분야와 관련된 부문에 있어서는 이들 대형 기업들에게 시장을 선점 당하지 않으려고 노력 중에 있다."라고 시젠은 말했다.

마이크로소프트처럼 어도비의 사업 또한 패키지 소프트웨어 쪽으로 치중된 것이 사실이다. 사람들이 직접 CD를 구매하여 자신의 컴퓨터에 직접 설치하는 방식에 큰 비중을 두고 있었던 것이다.

이러한 사업의 편중 문제를 개선하기 위해, 어도비는 소프트웨어와 서비스 부문에서 마이크로소프트가 현재 전개하고 있는 대규모의 노력을 본받아, 온라인 서비스 부문에 있어서의 확장을 꾀하여 기존의 사업을 다각화 시키려는 계획을 세우고 있다.

온라인 애플리케이션이 점점 더 기능화 되어가고 있는 추세에 발맞추어, 어도비는 웹 서비스를 통해 제품 포트폴리오를 작성하는 분야에 주목하고 있다고 시젠은 말했다.

어도비는 온라인에서만 이용할 수 있는 애플리케이션을 제공함과 더불어, 「어도비 포토샵 라이트룸」(Adobe Photoshop Lightroom)의 예와 같이 웹을 데스크톱 제품들의 기능을 선보이는 어떤 수단으로도 사용할 수 있도록 다각화 할 예정이다.

"우리는 그 곳에(온라인 상)에 고객들이 있음을 알고 있다. 그러나 그들이 우리에게 직접적으로 사용료를 지불하지 않을 것이라는 사실도 알고 있다. 하지만 우리는 광고 수익을 통해 그만큼의 수익을 창출할 수 있기를 기대한다. 구글도 이러한 사업 모델을 이용해 서비스하고 있는 애플리케이션들 중 성공하고 있는 애플리케이션도 존재함을 확인해 준 바 있다."고 시젠은 말했다.

물론 어도비의 온라인 시장 진출은, 비단 고조된 사용자들의 기대감과 수요 때문만이 아니라, 점점 관련 시장 잠식을 위해 다가오고 있는 구글을 경계하기 위한 어떤 포석이라고도 생각된다고 「버튼 그룹」(Burton Group) 애널리스트 피터 오 켈리(Peter O’Kelly)는 말했다.

“디지털 소비자의 입장에서 보았을 때, 어도비가 경쟁력을 가지고, 또 소비자로부터 그 가치를 인정받기 위해서는 최신 제품 및 서비스 제공업체라는 인식을 얻을 수 있도록 노력해야 한다.”고 오 켈리는 말했다. 선두 자리를 수성하지 못하면, 그 이후 전망은 그리 밝지 못하다고 그는 덧붙였다.

데스크톱 애플리케이션인 구글의 「피카사」(Picasa)는 웹상에 사진을 올릴 수 있는 기능을 보유하고 있다. 또 이를 이용해 포토샵 파일도 볼 수 있게끔 만들어져 있다고 오 켈리는 설명했다.

피카사와의 한 판 승부?
몰론 온라인상에서 제공되는 포토샵은 처음부터 낮은 사양의 제품으로 설계되어 있었다고는 해도, 적어도 기존의 무료 대체 프로그램보다는 우수한 기능을 보유하고 있어야 한다. 온라인 이미 편집 애플리케이션 제품으로서, 어도비는 사용자들이 온라인 제품들에 대해 초반 인상을 좋게 가져갈 수 있도록 유도해야 하는 도전에 직면해 있다고 그는 덧붙였다.

“네트워크 지연이 사용자들 사이에서 화제가 되면 좋을 것이 없다. 그래서 이번 제품이 비디오 리믹스 제품보다 더욱 난해하다고 볼 수 있다.”고 그는 말했다. 그는 “비록 대역폭이 지속적으로 확장되고 있지만, 공간들이 점점 비디오 파일로 꽉꽉 차 들어가고 있기 때문에, 사용자들이 느끼는 속도감은 향 후 3년에서 5년간 일정 수준을 그대로 유지할 것으로 보인다.”고 예상했다.

또한 회사는 현재 디자이너들이나 일러스트레이터들 사이에서 널리 쓰이는, 포토샵이라는 브랜드 네임의 명성을 훼손하지 않도록 주의해야 하는 과제를 안고 있다.

“우리가 포토샵이라는 이름을 내걸고 온라인 시장에 뛰어들면, 사람들은 피카사보다 훨씬 더 인지도 있는 포토샵을 이용할 개연성이 높다. 왜냐하면 포토샵이라는 브랜드가 이의 품질을 보증하고 있기 때문에 사람들이 더 믿음을 가지기 때문”이라고 시젠은 말했다.

구글 측은 어도비의 이러한 움직임에 대해 그 어떤 언급도 하고 있지 않은 상태이다.

점점 더 많은 온라인 멀티미디어 기능과 제품들을 소비자들에게 소개하고 있는 이러한 추세에서, 어도비는 포토샵이나 비디오 편집 스위트인 「프리미어 프로」(Premier Pro), 등에서 얻은 전문성을 적극 활용할 예정이고, 또 이에 「매크로미디어」(Macromedia)와의 합병을 통해 얻은 웹 개발 노하우와 잘 버무려 적용할 예정이다.

한 예로 리믹스는 「어도비 플래시 플레이어」(Flash Player) 개발 환경이었던 「플렉스」(Flex)를 이용해 만들어졌다.

시젠은 풍부한 웹 개발 기술을 보유하고 있는 구글이 향 후 온라인 미디어 편집 애플리케이션 시장에서 어도비를 위협할 강력한 경쟁자가 될 가능성이 높다고 예상했다. 어도비는 아직 온라인, 광고 기반 서비스를 제공함에 있어서, 어떤 방법을 사용할지를 놓고 저울질하고 있는 상태라고 시젠은 덧붙여 말했다.

어도비 리믹스에 대한 포토버켓과의 계약은 매우 단순하다. 어도비는 그들과 광고 수익을 나눠 가질 뿐, 관련 시스템에 대한 비용 부담이나, 웹사이트 운영비용 등에 대해서는 책임을 지지 않는다.

하지만 웹 광고로부터 나오는 수익이 얼마나 효용성이 있느냐에 따라 어도비 또한 직접 온라인 서비스를 제공하는 방안도 고려해 볼 수 있다고 시젠은 말했다. “만약 광고가 상당한 수익을 낼 수 있는 아이템이라는 판단이 서게 되면, 온라인 서비스 운영에 대한 생각도 해봄직하다.”라고 그는 말했다.

어도비는 이미 최신 「아크로뱃 PDF 리더」(Acrobat PDF reader)와 함께 소개된 웹 회의 서비스인 「아크로뱃 커넥트」(Acrobat Connect)를 제공하고 있는 상태이다.

출처 : ZDNet Korea - 원문 : http://news.com.com/Adobe+to+take+Photoshop+online/2100-7345_3-6163015.html
    

설정

트랙백

댓글

스킨 배경 플래시 업데이트

Design/Web 2007. 3. 2. 15:51
1차로 올려드린 bg.swf 파일을 버전업하여 올립니다.

새로 올려드리는 bg.swf파일은 외부에 있는 이미지를 불러와서 사용하게 만들었습니다. 기본으로 올리는 이미지를 사용하셔도 되고 원하는 이미지를 만들어서 올리셔도 됩니다. 사용 방법은 아래와 같습니다.

기존의 bg.swf 파일과 파일명은 같습니다.




bg.swf -> 배경 플래시 파일
img.jpg -> 배경 플래시에서 사용할 이미지 가로 : 1014 x 세로 : 644 사이즈입니다.

위 두 파일은 images/ 폴더에 업로드 하시면 됩니다.

사용하시는 분이 이미지를 만드실 경우에는 위와 같이 가로와 세로 사이즈에 맞게 "img.jpg" 파일명으로 만들어서 올리시면 됩니다. 이미지는 블로우 처리가 되기 때문에 이미지 퀄리티가 좋은 필요는 없습니다. 플래시에서 로딩하는 시간이 걸리기 때문에 이미지 용량은 최대한 작게 하셔서 올리시기 바랍니다. 참고로 첨부하는 img.jpg 파일은 포토샵에서 퀄리티를 1로 저장했기 때문에 용량이 34k 정도 됩니다.


플래시에서는 검정색(#000000) 부분에는 무비클립을 생성하지 않기 때문에 생성하지 않을 곳은 검은색으로 처리하셔서 이미지를 만드시면 됩니다.

감사합니다.

    

설정

트랙백

댓글