본문
플래시 액션스크립트 3.0 나만의 정리 -1
플래시로 만들면 좋을거 같다.. 하는 아이디어가 떠올라서 오늘부터 플래시를 공부하기로 했다. '컴퓨터 언어는 책이 없어도 인터넷에 많은 자료를 통해서 충분히 익힐 수 있다'라는 주의어서 야웅닷컴의 액션스크립트 3.0 강의를 보기로 했다. 처음 예제를 보는데 이건 뭐 자바도 아니고-_-;;
액션스크립트 2.0과 3.0이 완전히 달라졌다는 말에 3.0을 공부하기로 했고, 최신버전인 flas cs3으로 공부하기로 했다. 예전에 플래시 소스라고 해서 받아서 2004 mx를 통해 봤는데 인터페이스가 적응이 안되어 관뒀던 기억이 있어서 새로운 버전으로 받은것이다.(이런 안좋은 기억에 대해 선택이 좌지우지 되는 경우가 많다.)
아무튼 금붕어 두뇌를 보조하기 위하여 이 게시물을 쓴다. 이 게시물은 기본적인 프로그래밍 지식이 있는 상태에서 본다면, 아 플래시가 이런 구조이구나, 정도의 개념파악을 할 수 있을 것이다. 간혹 변수명이 서로 다르고 생략된 부분이 많이 있는데, 그런건 크게 중요한건 아니므로 패스,
우선 강의의 48강까지의 내용을 초 간단하게 요약한 것이다. 다음강의가 xml 인거 보면 아무래도 복잡해 질거 같아 여기까지 정리해본다. 강의를 제공해주신 야웅닷컴과 김기준 강사님께 감사드린다.
1. 개체선언 시
변수선언 : var a:int
함수 선언 : public function Say():String
클래스 구현 : var 인스턴트명:클래스명 = new 클래스명();
2. 클래스와 패키지
클래스는 as파일에서만 만들 수 있다.
액션스크립트의 Package{} == 네임스페이스 -> as파일의 다른 내용들을 감싼다.
trace("동물")는 debug console 창에 '동물'이라 표시하라는 함수이다.
package 안에는 1개의 클래스를 두는 것이 원칙이므로 2개의 클래스 Lion 클래스와 Cat 클래스는 package 밖에 코딩한다.
Lion, Cat 클래스 앞에 있는 internal은 같은 패키지 내에서 참조할 수 있는 클래스 속성이다.(internal 기본값이기 때문에 안적어도 된다.)
메뉴-윈도우-액션창을 통해 fla파일내에 액션스크립트 입력.(단축키 F9)
윈도우 – 구성요소를 눌러서 플래시 구성요소를 넣을 수있다.(버튼, 텍스트박스 등)
3. 이벤트 설정
mybutton.addEventListener(KeyboardEvent.KEY_UP, keyupHandler);
function keyupHandler(event:KeyboardEvent):void//키보드 버튼이 떼어지면 실행.
{outputtext.text=inputtext.text}
4. 플래시-> 자바스크립트
import flash.external.ExternalInterface;
ExternalInterface.call("sendData_toJavaScript", myText.text);
<script>sendData_toJavaScript = function(str){alert(str);}</script>
5. 자바스크립트 -> 플래시
import flash.external.ExternalInterface;
ExternalInterface.addCallback("sendToActionScript", receivedFromJavaScript);
private function receivedFromJavaScript(value:String):void {output.appendText(value + "\n");}
<script>function sendToActionScript(value) {document.getElementByID("ExternalInterfaceExample").sendToActionScript(value);} </script>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="ExternalInterfaceExample" width="300" height="200" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
<param name="movie" value="ExternalInterfaceExample.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#869ca7" />
<param name="allowScriptAccess" value="always" /> <-꼭 넣을것?
<embed src="ExternalInterfaceExample.swf" quality="high" bgcolor="#869ca7" width="300" height="200" name="ExternalInterfaceExample" align="middle" play="true" loop="false" quality="high" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed></object>
6. 플래시 파일간 통신
(1) 서버
import flash.net.LocalConnection;
private var conn:LocalConnection = new LocalConnection();
conn.send("myConnection", "lcHandler", message.text);
/*같은 폴더에 있는 다른 swf 파일에 접속하고, 이곳의 텍스트 박스에 입력된 문자를 가지고 가서, 다른 swf 파일의 lcHandler 함수를 실행하라는 뜻입니다*/
(2) 클라이언트
import flash.net.LocalConnection;
private var conn:LocalConnection = new LocalConnection();
conn.client = this;
try {
conn.connect("myConnection");
}
catch (error:ArgumentError) {
trace("접속할 수 없습니다");
}
public function lcHandler(msg:String) :void {
output.appendText(msg + "\n");
}
7. 소리 재생하기(소스 그대로 복사한거)
import flash.events.Event;
import flash.media.Sound;
import flash.net.URLRequest;
var s:Sound = new Sound();
s.addEventListener(Event.COMPLETE, onLoadComplete);
var req:URLRequest = new URLRequest("mySound.mp3");
s.load(req);
function onLoadComplete(event:Event):void
{
var localSound:Sound = event.target as Sound;
localSound.play();
}
8. 비디오 파일(flv) 재생하기
import flash.events.*;
import flash.media.Video;
import flash.net.NetConnection;
import flash.net.NetStream;
private var videoURL:String = "Video.flv";
private var connection:NetConnection = new NetConnection();
private var stream:NetStream;
connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
connection.connect(null);
private function netStatusHandler(event:NetStatusEvent):void {
switch (event.info.code) {
case "NetConnection.Connect.Success":
connectStream();
break;
case "NetStream.Play.StreamNotFound":
output.appendText("비디오 파일을 찾을 수 없습니다!");
break;
}
private function connectStream():void {
var stream:NetStream = new NetStream(connection);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler);
var video:Video = new Video();
video.attachNetStream(stream);
stream.play(videoURL);
addChild(video);
}
private function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler: " + event);
}
private function asyncErrorHandler(event:AsyncErrorEvent):void {
// AsyncErrorEvent events 무시.
}
댓글