[FlashPlayer] Adobe Flash Player v9.0.60.184 beta - H.264/HE-AAC지원

Miscellaneous/Etc 2007. 8. 27. 06:37
Adobe Systems는 지난 8월 21일 압축 규격 H.264와 HE-AAC (Hi Efficiency AAC)를 Flash Player에서 지원한다고 발표했다. 현재는 베타판 공개이고 이번 가을에 정식판을 발표할 예정이라고 한다.

베타판은 Flash Player 9 Update Downloads@Labs에서 다운로드 하여 인스톨 할 수 있는데 주의할 것은 기존에 있던 FlashPlayer를 언인스톨하고 설치 해야 한다. H.264가 FlashPlayer에 추가되면 iPod를 재생할 수 있다. H.264/HE-AAC 비디오 재생도 플래시플레이어에서 가능하게 되어 MPEG-4 표준을 따르고 있는 MP4, MOV, 3GP등을 재생할 수 있다고 한다.

현재는 단지 지원한다는 의미로 flv만큼의 퍼포먼스를 기대하기는 어려울 듯싶지만 지원한다는 자체의 의미는 매우 크다고 볼 수 있다. Adobe의 다이나믹 미디어 담당 Mark Randall에 의하면 최신판에서는 그래픽 카드의 하드웨어 가속을 이용할 수 있도록 설계되고 있어 듀얼 코어 프로세스에서 최적화 된다고 한다.

Microsoft는 Silverlight를 통해서 웹비디오계의 흐름에서 Flash의 독점에 도전할 의향인 듯 하다. Microsoft는 이미 MLB.com 등 대기업과 Silverlight 채용을 계약했다고 한다. Microsoft는 현시점에서 H.264의 지원을 이야기하고 있지 않지만 고객의 피드백에 근거해서 지원할 가능성이 있으면 지원할 방침이라고 전하고 있다.

웹비디오 기술의 흐름은 앞으로 웹의 발전 방향의 초석이 될 듯싶다. 메크로미디어가 어도비에 인수되었던 시점은 메크로미디어로서는 절호의 찬스였다는 생각이다. 하지만 어도비가 아니라 구글 쪽에서 메크로미디어를 인수 했다면 어떤 변화가 발생했을까 궁금하다. 간간히 구글이 flash만을 인수하거나 어도비를 인수할 수 있는 가능성에 대해서 조심스럽게 이야기를 하고 있는 듯하다. 어도비가 메크로미디어를 인수할 때 20%이상의 프리미엄이 있었던 것을 감안한다면 인수금이 대단할 것으로 예상된다. 만약 그렇게 된다면 엄청난 이슈가 될 것이지만 그러한 이야기는 구글 쪽에서 서비스 하고 있는 대부분이 FlashPlayer를 통해서 배포되고 있기 때문에 나오는 루머가 아닐까 싶다.

    

설정

트랙백

댓글

Flash Player 9 실시간 인스톨 상황

Programming/ActionScript 3.0 2007. 8. 10. 10:52






현재 Flash Player 9버전 install 상황, 이 숫자의 개념이 머리 속에 들어오지 않는다.





    

설정

트랙백

댓글

  • jin_u 2007.08.10 14:24 ADDR 수정/삭제 답글

    저 값 어떻게 가지구 온거냥?

    • jasu 2007.08.10 18:10 신고 수정/삭제

      값을 가지고 온 것은 아니고 웹에 있는 swf 파일 불러들인거다.

  • 서연아빠 2007.09.13 14:05 신고 ADDR 수정/삭제 답글

    자수님아 님 블로그 링크추가했음 - 엄

    • jasu 2007.09.13 15:36 신고 수정/삭제

      아... 너무너무 감사합니다. ^^ '가 치환이 되지 않는거 같네요 그냥 Jasu blog라고 하셔도 상관없습니다. ^^

[AS3] Flash Player9의 새로운 풀 스크린 모드

Programming/ActionScript 3.0 2007. 7. 4. 23:31
Flash Player9 업데이트 3에서는 공개되는 하드웨어 기능을 이용한 풀 스크린 모드가 추가되었다.

하드웨어 스켈링의 사용법
Flash Player9 업데이트 3의 Stage 오브젝트에는 fullScreenSourceRect라고 하는 속성이 추가된다. 이 속성은 AS2와 AS3에서 모두 사용 가능하다. fullScreenSourceRect에 의해 지정된 영역은 하드웨어의 스켈링 기능에 의해 표현 되기 때문에 기존의 풀 스크린 모드보다 퍼포먼스와 화질 면에서 현격히 개선되고 있다.

아래 샘플은 Stage를 화면 전체에 넓히는 기능이다.




import flash.geom.*;
function goFullScreen()
{
Stage["fullScreenSourceRect"] = new Rectangle(0, 0, Stage.width, Stage.height);
Stage["displayState"] = "fullScreen";
}

비디오를 풀 스크린으로 표시하는 경우는 Rectangle 크기를 비디오의 오리지날의 크기로 한다.

AS3에서 Stage의 fullScreenSourceRect속성을 적용하려면 playerglobal.swc를 클래스패스영역에 포함 시켜야 한다. CS3 의 ActionScript 3.0/classes 폴더에 기존에 파일을 아래 파일로 바꿔주어야 한다. (playerglobal.swc파일을 첨부한다.)



비디오의 퀄리티와 용량에 따라 다르겠지만 대체적으로 fullScreenSourceRect속성을 사용하면 비디오를 풀스크린으로 표현했을 때의 CPU 점유율은 사용하지 않은 것 보다 대략 절반 정도로 떨어지고 화질 면에서도 개선된 점을 발견할 수 있다.

    

설정

트랙백

댓글

  • karaman 2007.07.25 10:08 ADDR 수정/삭제 답글

    좋은 정보 받아서 갑니다. 꼭 필요한 기능이었는데 도움이 돼었네요.
    혹시 풀화면 하였을때 esc키를 누르면 돌아갑니다... 라는 글자를 없애는 방법은 아시는지요?
    그리고 버튼을 클릭해야만 풀스크린이 돼는듯한데.
    버튼을 클릭하지 않고 하는방법은 없나요?

    • jasu 2007.07.25 11:41 신고 수정/삭제

      안녕하세요... Esc관련 안내 글은 컨트롤 할 수 있는 기능을 제공하고 있지 않은 듯 합니다. 그리고 풀스크린 모드는 사용자의 인터렉션에 의해서만 적용할 수 있습니다. 따라서 버튼을 클릭하지 않고 자동으로 풀스크린 모드로 적용할 수는 없습니다.

  • karaman 2007.07.26 03:30 ADDR 수정/삭제 답글

    답변 감사합니다. 우연치않게 들르게 돼어 좋은정보 많이 얻어 갑니다.
    제가 풀 스크린을 사용하면서 또 하나 문제 생긴것이 inputtext에 커서가 나타나지 않는 문제가 생기네요. 일반 플래쉬 플레이어로 풀스크린 가동시 상관없는데
    html을 사용하여 풀스크린 사용할땐 풀스크린상태에서inputtext에 커서가 나타나지 않네요 글자도 써지질 않구요 혹시 이부분에 대해 아시면 알려주세요 ^^ 풀스크린된다고 큰소리 쳐놨는데 이거참 난감합니다 ㅎㅎ

    • jasu 2007.07.26 03:39 신고 수정/삭제

      안녕하세요...^^; 풀스크린 모드에서는 키보드 이벤트는 발생하지 않습니다. 인터렉션은 오로지 마우스 이벤트만 가능하고 풀스크린으로 사용할 경우에 키보드 사용은 ESC키만 사용할 수 있습니다... 제 생각에는 풀스크린으로 하지 마시고 기존처럼 브라우저 팝업 전체 창으로 하시는 것이 좋을 것 같네요

  • chaospace 2007.08.21 11:59 ADDR 수정/삭제 답글

    fullScreenMode에 input텍스트가 안된다는 정보를 이렇게 얻어가네요..
    컥!이네요.. 이런 맹점이 있을 줄이야..
    좋은 정보감사합니다.!

    • jasu 2007.08.21 16:31 신고 수정/삭제

      ^^ 네... 헬프파일에 있는 내용인데 짮게 언급하고 있어서 지나치기 쉬운듯 싶네요...

  • 봉구 2007.09.22 14:14 ADDR 수정/삭제 답글

    소중한 정보 감사합니다....담아갈께요...

    • jasu 2007.09.24 22:23 신고 수정/삭제

      네...방문 감사합니다. 즐거운 추석 연휴 되세요...

  • 유니 2007.10.24 11:44 ADDR 수정/삭제 답글

    좋은 정보 감사합니다..^^
    그런데 swf 파일로 로컬에서는 잘되는데 익스플로어로는 안되네요..
    ㅡㅡ; 왜그런건가요?

    • jasu 2007.10.25 00:44 신고 수정/삭제

      안녕하세요...
      로컬에서는 풀스크린이 되는데 웹페이지에서는 되지 않는다는 말씀이신가요? 혹시 swf 임베드 처리 html코드상에서 allowFullScreen="true" 로 설정하셨는지 확인해 보세요 false일 경우에는 풀스크린 모드를 지원하지 못합니다.
      감사합니다.

  • beartyoon 2009.05.14 18:32 ADDR 수정/삭제 답글

    우선 좋은 정보 감사드립니다.
    제가 하드웨어 스케일링을 2.0버전으로 작업을 했는데요
    전체화면모드에서 esc를 누르고 일반화면으로 전환후에 다시 전체화면모드로 가려고
    버튼(전체화면버튼)을 클릭하면 바로 전체화면으로 변경이 되질않고 화면이 깜빡거립니다. 그상태에서 한번 더 클릭하면 전체화면이 되구요..
    혹시 버그인가요?
    3.0에서는 잘되는것 같은데요 ...
    답변 부탁드리겠습니다. (__)

    • jasu 2009.05.14 23:36 신고 수정/삭제

      안녕하세요
      아직 2.0에서 fullscreen mode 버그에 관련된 내용을 아는 부분이 없네요. 일단 여러가지 테스트가 필요할 듯 싶습니다. 브라우저별로(ie, 파폭) 테스트가 필요할 듯 싶고 브라우저에 영향 없이 같은 반응이 나타난다면 일단 플래시 내부에서 문제를 찾아보는 방향이 좋을 듯 싶습니다.

      증상으로 봐서는 fullscreen 모드에서 normal 모드로 변경한 후 다시 fullscreen모드로 변경할 때 특정 부분에서 발생한 error가 최종 Stage로 throw되면서 발생할 가능성이 있습니다. 모드 변경 기능부 스크립트에서 토글이 제대로 처리되고 있는지 확인이 필요할 것 같습니다.

      위 문제를 테스트 하기 위해서는 기존에 적용하려고 했던 파일에서 문제를 찾기 보다는 테스트를 위한 간단한 샘플을 만들고 테스트를 해보시는 것을 권합니다.

      그리고 증상이 발생하는 부분에서 어떤 error가 throw되고 있지는 않은지 확인하기 위해서는 플래시플레이어 디버깅 버전을 설치하시고 테스트 해보시는 것이 도움이 될 것 같네요

  • beartyoon 2009.05.15 18:22 ADDR 수정/삭제 답글

    방금 파이어폭스에서 테스트 해보니
    오류없이 작동을 하네요.
    음...

    그럼 플래시 문제는 아니라는 이야기네요
    쩝...
    해결책이 있을까요?

[AS3] Matrix 오브젝트의 사용

Programming/ActionScript 3.0 2007. 6. 20. 04:01
Matrix 클래스는 좌표 공간의 사이에 포인트를 매핑 하는 방법을 결정하는 변환 행렬을 나타낸다. Matrix 오브젝트의 프롭퍼티를 설정하여 Matrix 오브젝트를 Transform 오브젝트의 matrix 프롭퍼티에 적용하고 그 Transform 오브젝트를 표시 오브젝트의 transform 프롭퍼티에 적용하는 것으로 표시 오브젝트에 대해서 다양한 그래픽 변환을 실행할 수 있다. 실현될 수 있는 변환 기능으로서는 평행이동 (x 위치 및 y 위치의 이동) , 회전, 확대•축소, 경사등이 있다.

Matrix 오브젝트의 정의
매트릭스는 프롭퍼티 (a ,b ,c ,d ,tx ,ty)를 조정해 직접 정의할 수도 있지만 createBox() 메소드를 사용해 정의하는 편이 간단하다. 이 메소드의 파라미터에서는 작성하는 매트릭스에서 정의하는 확대•축소, 회전, 평행이동의 효과를 직접 정의할 수 있다. 예를 들어 다음의 코드로 작성한 Matrix 오브젝트에는 수평 방향 2.0배 확대, 수직 방향 3.0배 확대, 45도의 회전, 오른쪽으로 10 피크셀의 이동, 및 아래에 20 피크셀의 이동의 효과가 있다.

var matrix:Matrix = new Matrix();
var scaleX:Number = 2.0;
var scaleY:Number = 3.0;
var rotation:Number = 2 * Math.PI * (45 / 360);
var tx:Number = 10;
var ty:Number = 20;
matrix.createBox(scaleX, scaleY, rotation, tx, ty);
또한 scale() ,rotate() ,translate() 의 각 메소드를 사용하면 Matrix 오브젝트로 설정한 확대•축소, 회전, 평행이동의 효과를 변경할 수 있다. 이러한 메소드로 지정한 값은 기존의 Matrix 오브젝트로 설정되어 있는 값과 합쳐진다. 예를 들어, 다음의 코드에서는 scale() (와)과 rotate()를 2 회 호출하고 있기 때문에 Matrix 오브젝트의 효과는 4 배의 확대와 60도의 회전이 된다.

var matrix:Matrix = new Matrix();
var rotation:Number = 2 * Math.PI * (30 / 360); // 30
var scaleFactor:Number = 2;
matrix.scale(scaleFactor, scaleFactor);
matrix.rotate(rotation);
matrix.scale(scaleX, scaleY);
matrix.rotate(rotation);
myDisplayObject.transform.matrix = matrix;
경사 변형을 Matrix 오브젝트에 적용하려면 b 프롭퍼티 또는 c 프롭퍼티를 조정한다. b 프롭퍼티를 조정하면 매트릭스가 수직 방향으로 경사하고 c 프롭퍼티를 조정하면 매트릭스가 수평 방향으로 경사한다. 다음의 코드는 myMatrix Matrix 오브젝트를 수직 방향으로 2배 경사한 것이다.

var skewMatrix:Matrix = new Matrix();
skewMatrix.b = Math.tan(2);
myMatrix.concat(skewMatrix);
Matrix 에 의한 변환은 표시 오브젝트의 transform 프롭퍼티에 적용할 수 있다. 예를 들어 다음의 코드에서는 myDisplayObject오브젝트에 매트릭스 변환을 적용하고 있다.

var matrix:Matrix = myDisplayObject.transform.matrix;
var scaleFactor:Number = 2;
var rotation:Number = 2 * Math.PI * (60 / 360); // 60
matrix.scale(scaleFactor, scaleFactor);
matrix.rotate(rotation);
myDisplayObject.transform.matrix = matrix;
첫 라인에서 myDisplayObject 표시 오브젝트가 사용하는 기존의 변환 매트릭스 (myDisplayObject 표시 오브젝트의 transformation, 프롭퍼티의 matrix 프롭퍼티) 를 Matrix 오브젝트로 설정한다. 이렇게 하는 것으로 표시 오브젝트의 위치, 확대율, 회전각을 근거로 한 Matrix 클래스 메소드의 실행에 의한 효과를 누적하여 적용할 수 있다.

메모 : flash.geometry 패키지에는 ColorTransform 클래스도 포함되어 있지만 이 클래스는 Transform 오브젝트의 colorTransform 프롭퍼티를 설정할 때에 사용하는 것이다. 기하학 변환에는 사용하지 않는다.


그라데이션에 관한 Matrix 오브젝트의 정의
셰이프로 사용하는 그라데이션을 정의하려면 flash.display.Graphics 클래스의 beginGradientFill() 및 lineGradientStyle() 메소드를 사용한다. 그라데이션을 정의할 때 이러한 메소드의 파라미터로 매트릭스를 지정한다.
위와 같은 목적으로 매트릭스를 작성하려면 createGradientBox() 메소드를 사용해 그라데이션 정의용의 장방형을 정의하는 것이 가장 간단한 방법이다. createGradientBox() 메소드로 지정하는 파라미터에서는 그라데이션의 확대•축소, 회전, 및 위치를 정의한다. 예를 들어 다음과 같은 성질을 가지는 그라데이션을 작성한다고 하면

•    GradientType.LINEAR
•    그린과 블루의 2 색,ratios 배열을 [0, 255] (으)로 설정
•    SpreadMethod.PAD
•    InterpolationMethod.LINEAR_RGB

다음의 예로 보이는 그라데이션은 createGradientBox() 메소드의 rotation 파라미터가 다르지만 그 외의 설정은 모두 같다.

사용자 삽입 이미지
width = 100;
height = 100;
rotation = 0;
tx = 0;
ty = 0;     



사용자 삽입 이미지
width = 100;
height = 100;
rotation = Math.PI/4; // 45
tx = 0;
ty = 0;     



사용자 삽입 이미지
width = 100;
height = 100;
rotation = Math.PI/2; // 90
tx = 0;
ty = 0;     


다음의 예로 보이는 그린 블루의 선상 그라데이션 효과는 createGradientBox() 메소드의 rotation ,tx ,ty 파라미터가 다르지만 그 외의 설정은 모두 같다.

사용자 삽입 이미지
width = 50;
height = 100;
rotation = 0;
tx = 0;
ty = 0;     



사용자 삽입 이미지
width = 50;
height = 100;
rotation = 0
tx = 50;
ty = 0;     



사용자 삽입 이미지
width = 100;
height = 50;
rotation = Math.PI/2; // 90
tx = 0;
ty = 0;     



사용자 삽입 이미지
width = 100;
height = 50;
rotation = Math.PI/2; // 90
tx = 0;
ty = 50;     



사용자 삽입 이미지
width = 50;
height = 100;
rotation = 0;
tx = 25;
ty = 0;     



다음의 코드는 마지막에 보이는 방사상 그라데이션을 생성한다.

import flash.display.Shape;
import flash.display.GradientType;
import flash.geom.Matrix;

var type:String = GradientType.RADIAL;
var colors:Array = [0x00FF00, 0x000088];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var spreadMethod:String = SpreadMethod.PAD;
var interp:String = InterpolationMethod.LINEAR_RGB;
var focalPtRatio:Number = 0;

var matrix:Matrix = new Matrix();
var boxWidth:Number = 50;
var boxHeight:Number = 100;
var boxRotation:Number = Math.PI/2; // 90
var tx:Number = 25;
var ty:Number = 0;
matrix.createGradientBox(boxWidth, boxHeight, boxRotation, tx, ty);

var square:Shape = new Shape;
square.graphics.beginGradientFill(type,
colors,
alphas,
ratios,
matrix,
spreadMethod,
interp,
focalPtRatio);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);

// 위와 같으나 package 형태의 클래스로 외부에 저장된 as 파일
package {
import flash.display.*;
import flash.geom.*;


public class RadialGradientExample extends Sprite {
public function RadialGradientExample() {
var type:String = GradientType.RADIAL;
var colors:Array = [0x00FF00, 0x000088];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var spreadMethod:String = SpreadMethod.PAD;
var interp:String = InterpolationMethod.LINEAR_RGB;
var focalPtRatio:Number = 0;

var matrix:Matrix = new Matrix();
var boxWidth:Number = 50;
var boxHeight:Number = 100;
var boxRotation:Number = Math.PI/2;// 90°
var tx:Number = 25;
var ty:Number = 0;
matrix.createGradientBox(boxWidth, boxHeight, boxRotation, tx, ty);

var square:Shape = new Shape;
square.graphics.beginGradientFill(type,
colors,
alphas,
ratios,
matrix,
spreadMethod,
interp,
focalPtRatio);
square.graphics.drawRect(0, 0, 100, 100);
addChild(square);
}
}}

    

설정

트랙백

댓글

[AS3] full-screen mode

Programming/ActionScript 3.0 2007. 6. 20. 00:59
블로그의 infinite 메뉴를 만들면서 스크린 모드에 따라 Event dispatcher가 있을 것 같아서 help파일을 찾아보니 역시나 있었다. 블로그의 infinite메뉴의 기능은 버튼을 눌렀을 때 FullScreen mode가 되며 3D 오브젝트를 보여주는 Main 클래스의 start 메소드를 호출하게 됨으로서 화면에 3D 오브젝트를 보여주게 되는데 이처럼 Screen Mode의 처리 결과에 따른 Event를 처리할 수 있다.










import flash.events.FullScreenEvent;
import flash.events.MouseEvent;

private function toggleFullScreen(event:MouseEvent):void {
switch (stage.displayState) {
case "normal" :
stage.displayState = "fullScreen";
break;
case "fullScreen" :
default :
stage.displayState = "normal";
break;
}
}

// fullScreenBtn라는 버튼을 클릭함에 따라 Screen mode가 toggle switch됨.
fullScreenBtn.visible = stage.hasOwnProperty("displayState");
fullScreenBtn.addEventListener( MouseEvent.CLICK, toggleFullScreen );


function fullScreenRedraw(event:FullScreenEvent):void
{
if (event.fullScreen)
{
FullScreen mode가 됐을 때 처리
}
else
{
Normal mode가 됐을 때 처리
}
}

// stage의 Screen Mode 변환에 따른 처리하기 위한 stage에 리스너를 등록.
stage.addEventListener(FullScreenEvent.FULL_SCREEN, fullScreenRedraw);



    

설정

트랙백

댓글