플래시에서 파라메터를 받아 서버와 통신하는 예제이다.
URLRequest와 URLLoader를 이용하여 구현하였다.
메인 소스:
[code]
import flash.events.Event;
import flash.events.IEventDispatcher;
import flash.events.IOErrorEvent;
import flash.events.HTTPStatusEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;
import flash.net.URLRequestMethod;
import flash.text.TextFieldAutoSize;
import fl.controls.Label;
import com.ericfeminella.collections.IMap;
import com.ericfeminella.collections.HashMap;
import kr.htdocs.net.HTTPRequest;
/* 파라메터를 받음 */
var param1:String = (loaderInfo.parameters.param1 == undefined)
? "null" : loaderInfo.parameters.param1;
var param2:String = (loaderInfo.parameters.param2 == undefined)
? "null" : loaderInfo.parameters.param2;
/* 넘겨줄 파라메터 셋 만듬 */
var map:IMap = new HashMap();
map.put("param1", param1);
map.put("param2", param2);
/* 서버에 데이터 요청 */
var xr:HTTPRequest = new HTTPRequest("http://www.htdocs.kr/fmp/flv.php", URLRequestMethod.GET, map);
xr.addEventListener(Event.COMPLETE, completeHandler);
xr.addEventListener(Event.OPEN, openHandler);
xr.addEventListener(ProgressEvent.PROGRESS, progressHandler);
xr.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
xr.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
xr.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
xr.load();
/*
* 이벤트 핸들러
*/
function completeHandler(event:Event):void {
var loader:URLLoader = URLLoader(event.target);
/* 텍스트 출력 */
txResult.text = loader.data;
/*
var l:Label = new Label();
l.text = loader.data;
l.autoSize = TextFieldAutoSize.CENTER;
l.x = 30;
l.y = 30;
addChild(l);
*/
}
function openHandler(event:Event):void {
txLog.text = txLog.text + "openHandler: " + event;
}
function progressHandler(event:ProgressEvent):void {
txLog.text = txLog.text + "progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal;
}
function securityErrorHandler(event:SecurityErrorEvent):void {
txLog.text = txLog.text + "securityErrorHandler: " + event;
}
function httpStatusHandler(event:HTTPStatusEvent):void {
txLog.text = txLog.text + "httpStatusHandler: " + event;
}
function ioErrorHandler(event:IOErrorEvent):void {
txLog.text = txLog.text + "ioErrorHandler: " + event;
}
stop();
[code]
HTTPRequest.as :
[code]
/**
* Copyright (c) 2008 Young Joo Lee <ifalcon@naver.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package kr.htdocs.net {
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import com.ericfeminella.collections.IMap;
/**
* = URLRequest =
* URLRequest 클래스는 하나의 HTTP 요청에 포함된 모든 정보를 캡처한다.
* FileReference 클래스의 upload() 및 download() 메서드뿐 아니라 URLStream의 load() 메서드,
* URL 다운로드를 시작하기 위한 URLLoader, Loader 및 기타 로드 작업에 URLRequest 객체가 전달된다.
*
* = URLLoader =
* URLLoader 클래스는 URL에서 텍스트, 이진 데이터 또는 URL 인코딩된 변수 형식으로 데이터를 다운로드한다.
* 이것은 텍스트 파일, XML 또는 동적 데이터 기반 응용 프로그램에서 사용되는 기타 정보를 다운로드할 때 유용하다.
*
* URLLoader 객체는 모든 데이터를 URL에서 다운로드한 다음 ActionScript에서 사용할 수 있게 한다.
* 다운로드 진행 상황에 대한 알림을 전송하며, 이 진행 상황은 전달된 이벤트뿐 아니라
* bytesLoaded 및 bytesTotal 속성을 통해서도 모니터링할 수 있다.
*/
public class HTTPRequest {
private var _uri:String;
private var _method:String;
private var _args:IMap;
private var _loader:URLLoader;
/**
* 생성자
*/
public function HTTPRequest(uri:String, method:String, args:IMap = null) {
this._uri = uri;
this._method = method;
this._args = args;
this._loader = new URLLoader();
}
/**
* 이벤트를 등록한다.
*/
public function addEventListener(type:String, listener:Function):void {
_loader.addEventListener(type, listener);
}
/**
* 지정된 uri로 데이터를 요청한다.
*/
public function load():void {
var request:URLRequest = new URLRequest(_uri);
request.method = (_method == null) ? URLRequestMethod.GET : _method;
/* 전달될 파라메터를 세팅한다. */
if (_args != null) {
var nameValuePairs:URLVariables = new URLVariables();
var keys:Array = _args.getKeys();
for each(var key:String in keys) {
nameValuePairs[key] = _args.getValue(key);
}
request.data = nameValuePairs;
}
/* 요청 */
try {
_loader.load(request);
} catch (error:Error) {
trace("Unable to load requested document.");
}
}
}
}
[/code]
다운로드: flashmovieplayer.zip
데모:

(
0)

(
0)
happyness
WEB/Flash
ActionScript 3.0,
Flash
2008/03/25 17:12
2008/03/25 17:12