FlashAS3

[URLStream]

Loaderクラスのインスタンスでloadすると画像やswfを読み込むことが出来ます。
しかし、ローディング中にunloadしてもストリームが止まらないという現象が起きます。
ダウンロードシミュレータ上で確認できます。
FlashPlayerのバグだという噂ですが
これを回避するのにURLStreamを使用するとよいです。

var myLoader=new Loader();
var myStream=new URLStream();
myStream.addEventListener(Event.COMPLETE, completeHandler);
myStream.load(new URLRequest("ファイル名"));
function completeHandler(event){
	var bArray=new ByteArray();
	myStream.readBytes(bArray);
	myStream.close();
	myLoader.loadBytes(bArray);
}

unload時

if(myStream.connected){
	myStream.close();
}else{
	myLoader.unload();
}

[IOError]

Flashからファイルをロードするときパスが間違っていたりファイルが無かったときの処理の仕方。
よく忘れるのでメモ

var ns = new Namespace(url);
var xmlLoader = new URLLoader();
xmlLoader.dataFormat = URLLoaderDataFormat.TEXT;
xmlLoader.addEventListener(Event.COMPLETE, func);
xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, func2);
xmlLoader.load(new URLRequest(url));

[Flash+PHP]データをサーバへ送るには

FlashからPHPへデータを送って返事をもらうという処理をするとき、
いつもコードを忘れてしまうのでメモ

Flash側
var variables=new URLVariables();
variables.step="送るデータ";

var urlreq=new URLRequest(php_path);
urlreq.method=URLRequestMethod.POST;
urlreq.data=variables;

var urlloader=new URLLoader(urlreq);
urlloader.dataFormat=URLLoaderDataFormat.VARIABLES;
urlloader.addEventListener(Event.COMPLETE, get_data_complete);
urlloader.load(urlreq);

function get_data_complete(e){
	var vars=new URLVariables(e.target.data);
	var str=vars["returndata"].toString();
	trace(str);
}
PHP側  パーミッションの設定を忘れずに
<?php
$step = $_POST['step'];
$ss="データ受け取りました";
echo "returndata=".$ss;
?>

[Flash+js+CSS]swfのサイズをダイナミックに変更する

swfを貼り付けるときにサイズを指定しますが、
そのサイズをダイナミックに変更することに挑戦したら出来ました。
下記コードでFlashからjsをたたけば実行できます。
サンプルページ  サンプルページ2

html
<body bgcolor="#ffffff" onload="init_swfsize()">
<div id='flashcontent'></div>
<script type="text/javascript">
<!--
var installedVer=deconcept.SWFObjectUtil.getPlayerVersion();
var requiredver=9;
var requiredver2=45;
if(installedVer['major'] >=requiredver && installedVer['rev'] >=requiredver2
	|| installedVer['major'] >requiredver){
	var so = new SWFObject("swf/main.swf", "swf0", "100%", "100%", "9.0.45", "#000000");
	so.addParam("allowScriptAccess", "sameDomain");
	so.addParam("base", "swf/");
	so.write("flashcontent");
}else{
	//プラグインバージョンが低いときの処理
}
// -->
Javascript
function init_swfsize(){
	target_content=document.getElementById("flashcontent");
}
function set_swfsize_w(target_size){
	target_content.style.width=target_size;
}
function set_swfsize_h(target_size){
	target_content.style.height=target_size;
}
function set_swfsize(target_w, target_h){
	target_content.style.width=target_w;
	target_content.style.height=target_h;
}
CSS
#flashcontent{
	width:400px;
	height:400px;
}

[Flashからjpg]

Flash上のBitmapで画像を生成してjpgで保存すること。AS2時代に一度作ったのですが
処理が重くて実用するのは難しいなぁと思っていました。しかし最近ふと思い出して
AS3でつくったら出来ました。
スクリーンショット1
flash2jpg

JPGEncoder.asがいります。
SVNリポジトリ:http://as3corelib.googlecode.com/svn/

function save_jpg(bmd){
	var jpg_enc=new JPGEncoder(50);
	var byte_array=jpg_enc.encode(bmd);
	url_request=new url_request(phpPath);
	url_loader=new url_loader();
	url_request.contentType="application/octet-stream";
	url_request.method=URLRequestMethod.POST;
	url_request.data=byte_array;
	url_loader.load(url_request);
	url_loader.addEventListener(Event.COMPLETE,when_save_done);
}
function when_save_done(e){
	file_name=url_loader.data;
	tex_in.text=file_name;
}

PHP側はこう

<?php
$t=time()+72000;
$fileName=date("Ymd")."_".date("His")."_".$t.".jpg";
$fp = fopen("../image/".$fileName, 'wb');
fwrite($fp, $GLOBALS['HTTP_RAW_POST_DATA']);
fclose($fp);
print $fileName;
?>

[APE]

APE (Actionscript Physics Engine)
公式サイトより和訳
FlashおよびFlex用のフリーでオープンでAS3の物理エンジンです。APEはMIT LicenseでAlec Cove氏が作ったものです。
APE

[TextField]リンククリック→関数実行

TextField.htmlTextにhtmlを入れてやればhtml表現ができます。
「href」でハイパーリンクを設定することが可能です。そしてハイパーリンクをクリックしたときに
関数を実行できることを知ったのでメモ サンプルページ

tex_in : テキストフィールドインスタンス名
tex_in.htmlText="<a href="event:">クリックすると関数実行</a>";
tex_in.addEventListener(TextEvent.LINK, when_text_release);
function when_text_release(e){
	trace("(・∀・∀・)あ、いま押した?");
}