Posts Tagged ‘ActionScript’

このページの目次

ASでJSONをエンコードしたりデコードしたり

月曜日, 8月 17th, 2009

こんにちは、なかわけです。

今日は久しぶりにFlashの話です。いつもの備忘録です。
as3corelibで提供されているJSONユーティリティを使います。

エンコードの場合、

package {
	import flash.display.Sprite;
	import com.adobe.serialization.json.JSON; 

	public class encodeJson extends Sprite {
		public function encodeJson():void {
			var encodedJson:String = JSON.encode({
				'name' : 'nakawake',
				'type'  : 'neko',
				'age'   : 3
			});
		}
	}
}

デコードの場合(ウェブから取得してきた場合)

package {
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.IOErrorEvent;
	
	import com.adobe.serialization.json.JSON; 

	public class decodeJson extends Sprite {
		public function PostAndLoad() {			
			var request:URLRequest = new URLRequest('./json.php');
			var loader:URLLoader = new URLLoader();
			loader.load(request);
			loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
			loader.addEventListener(Event.COMPLETE, loaderCompleteHandler);
		}

		//ロードが正常に完了したとき
		private function loaderCompleteHandler(event:Event):void {
			var json:Object = JSON.decode(loader.data); 
			trace(json['name']);
			trace(json['type']);
			trace(json['age']);
		}

		//ロードに失敗したときの処理
		private function errorHandler(event:IOErrorEvent):void {
			trace("失敗したー");
		}
	}
}

こんな感じ

HTMLに埋め込むとFlashをクリックしてもページが開かない

水曜日, 7月 16th, 2008

こんにちは、なかわけです。

今日知った事実にかなりへこんでおります。
タイトルの通り、HTMLに埋め込むとFlashをクリックしてもページが開かない、のです。
もうちょい詳しく説明します。ムービークリップ(以下、MC)にボタン設定をしました。

MyButton.onRelease = function(){
getURL(“hoge.html”, “_sefl”);
}

ただ、これだけです。プレビューやなかわけが持っているテストサーバでは、MCをクリックするとちゃんとページにジャンプするのにお客さんの環境のサーバではクリックしてもページが切り替わりませんでした。マウスをオーバーするとカーソルは指マークには変わります。

その日1日中悩みましたが、結局わかりませんでした。

次の日、お客さんからメールが届いてました。

Flashプレイヤーのバージョンが9の場合、getURLで_selfが効かないようです

なんだってー!
調べてみたら、Adobeのサポートページに以下のようなドキュメントがありました。

229684 HTML ページに埋め込まれた SWF からのリンクが機能しない場合がある
http://support.adobe.co.jp/faq/faq/qadoc.sv?229684+002

簡単にまとめると、

  • 問題として、Flash Player 9では、getURL(または ActionScript 3.0 での navigateToURL)関数でウィンドウ名に「_self」「_parent」「_top」のいずれかを指定すると、SWF からのリンクが機能しない場合がある
  • 理由として、セキュリティの仕様上、getURL(または navigateToURL)の呼び出しは、同じホスト内の HTML ページのみを対象として作用する。つまり別ホストへのリンクはできない
  • 解決方法といて、別ホストへのリンクをする場合は、ターゲットに「_blank」を指定する

今日も勉強になったなー(つД`)