home > December 2008

Flashデバッグ用コード

December 23, 2008

Flashのデバッグ用コードです。
_urlでムービークリップのダウンロード元である SWF、JPEG、GIF、PNG の各ファイルの URL を取得してテスト環境かどうかの確認をする。

var tmp_str:String = _root._url.substring(0,4);
_DEBUG = (tmp_str != "http");
//_DEBUG = false;
var level_str:String;
level_str = (_DEBUG) ? "../" : "";

https → level_str=../;(一つ上の階層)
http → level_str= ;(同階層)

これで読込むファイルの前にlevel_strをつける。


Permalink | Comments (0)

FileReference.postData

December 22, 2008

FileReferenceで情報をmultipartで送信する方法。AS2
postDataはAS3から使用できるようになったと思っていたのですが違うみたいです。
配列アクセス演算子をつかって代入すれば大丈夫みたいです。

fileRef["postData"] = "post1=hoge&post2=hogehoge";
fileRef.upload("sample.php");

import flash.net.FileReference; 

allTypes = new Array();
imageTypes = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg)";
imageTypes.extension = "*.jpg; *.jpeg";
allTypes.push(imageTypes);

listener = new Object();

listener.onSelect = function(file:FileReference):Void {
trace("onSelect: " + file.name);
}
listener.onCancel = function(file:FileReference):Void {
trace("onCancel");
}
listener.onOpen = function(file:FileReference):Void {
trace("onOpen: " + file.name);
}
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
}
listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);
}
listener.onHTTPError = function(file:FileReference):Void {
trace("onHTTPError: " + file.name);
}
listener.onIOError = function(file:FileReference):Void {
trace("onIOError: " + file.name);
}
listener.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: " + file.name + " errorString: " + errorString);
}
fileRef = new FileReference();
fileRef.addListener(listener);
fileRef.browse(allTypes);

fileRef["postData"] = "post1=hoge&post2=hogehoge";

file_btn.onRelease = function():Void {
fileRef.browse();
};
upload_btn.onRelease = function():Void {
fileRef.upload("sample.php");
};

【追記】
あと、AS3ではDataEvent.UPLOAD_COMPLETE_DATAみたいなのもあるようですね。

詳細はこちら
http://level0.kayac.com/2008/06/as3filereferencepostdata.php


ちなみにこれではデータを送信できてもサーバーからの返り値を受け取ることはできないようです。
FlashPlayer9以上ならAS2でもonUploadCompleteDataで返り値も取れるっぽいですね(Require Flash Player 9.0.28.0 パラメータ)

onUploadCompleteData = function(fileRef: FileReference, data: String):Void {}

http://f-site.org/articles/2007/06/30234010.html

【さらに追記】
今度はMacだけupload()でアップができない現状が発生しました。
uploadした時に空の値を返さないとダメらしいです。

http://www.neetranger.com/red/2006/12/filereference2.html



Permalink | Comments (0)

SWFObjectとFlashVars

SWFObject v1.5の場合は


var so = new SWFObject("swf/main.swf", "main", "100%", "100%", "8", "#FFFFFF", true);
so.addVariable("FlashVars", "sample");
so.addParam("allowScriptAccess", "always");

so.write("flashContentsBlock");

Flash側


var myname:String;
var flashVars:Object = this.root.loaderInfo.parameters;
myname = flashVars['sample'];

SWFObject v2.1の場合は


<head>
<script type="text/javascript" src="swfobject-2-1.js"></script>
<script type="text/javascript">
function createPlayer(thePlaceholder, thePlayerId, theFile, theAutostart) {
var flashvars = {
file:theFile,
autostart:theAutostart
}
var params = {
allowfullscreen:"true",
allowscriptaccess:"always"
}
var attributes = {
id:thePlayerId,
name:thePlayerId
}
swfobject.embedSWF("player.swf", thePlaceholder, "320", "196", "9.0.115",
false, flashvars, params, attributes);
}
function init() {
createPlayer("placeholder1", "player1", "xxxxxx1.flv", false);
createPlayer("placeholder2", "player2", "xxxxxx2.flv", false);
createPlayer("placeholder3", "player3", "xxxxxx3", false);
}
</script>
</head>

でいけるみたい。忘れそうなのでメモ。

【追記】
URLにパラメーター付けてアクセスする時。
HTML側


so.addVariable("id", getQueryParamValue("id"));

Flash側のソースは下記になります。

import flash.display.*;

var tmpParam:Object; = loaderInfo.parameters;
var id_numberString = String(tmpParam["id"]);


参考サイト
http://www.link-log.net/archives/2007/07/htmlswf_2.html


Permalink | Comments (0)