2012.05.24 | 

こんにちはmuchoです。
いい季節ですねー。皐月。
さてさて表題の件です。

Flash内にテキスト入力欄を設置して日本語入力しようとすると
入力欄とは別の位置にIMEの小窓?が開いて確定後にテキストフォームに文字が入る。
不便だなー。でもこの問題ちょくちょく起きてたしなー。
と放置気味にしていたのですが、原因が分かりました。

環境ですが
Windows Vista
Firefox 12
Flash Player 11.2
OSはさておき、最新です・・・。

Pearl Cresent Page Saver Basicというブラウザウィンドウを
キャプチャするアドオンを入れてたのですが、
こいつが。Pearl Cresent Page Saver Basicが曲者でした。
どうもPearl Cresent Page Saver Basicのオプションで
「Flashコンテンツをキャプチャー」を有効にしていると
フォームに直接日本語入力できないようです。

ということでキャプチャするアドオンを乗り換えてみました。
FireShot - Webpage Screenshots: Capture + Annotate
https://addons.mozilla.org/en-US/firefox/addon/fireshot/
アイコンが分かりにくいですが設定いじれば機能的には問題なさそうです。

同じような現象で苦しんでる方(もしや少数民族?)
の助けになればいいなと思いメモ。

2012.03.09 | 

こんばんはmuchoです。

USTREAMをFlash内に読み込もうとして、あれこれやってみたのでメモ。
下記のページを参考にしました。
Flash Client API Documentation (AsDoc)

USTREAM Flash Client APIの使い方
Flash : Ustream Flash Client APIを使ってみる - SWFなカスタムパネルで中継を再生



/*
ちょっと苦しんだのが、再生動画のオリジナルサイズを取得する方法
viewer.channel.streamRect
に格納されるみたいです。

再生開始時のイベントもうまく取れませんでした。
viewer.channel.addEventListener("found", onStart);
viewer.channel.addEventListener("createStream", onStart);
このどちらもviewer.channel.streamRect取得できず、
また表示のタイミングともちょっとズレがあるような?
そこはいい解決法が見つからず悲しい力技になってしまいました。
今後の課題です。
*/




		
		public function main():void 
		{
			getRsl();
			visible = false;
		}

		private function getRsl():void 
		{
			Security.allowDomain("*");
			Security.allowInsecureDomain("*");
			viewerLoader = new Loader();
			viewerLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onRslLoad);

			this.addChild(viewerLoader);

			var applicationDomain:ApplicationDomain = ApplicationDomain.currentDomain;
			var loaderContext:LoaderContext = new LoaderContext();
			var request:URLRequest = new URLRequest("http://www.ustream.tv/flash/viewer.rsl.swf");

			loaderContext.applicationDomain = applicationDomain;
			viewerLoader.load(request, loaderContext);
		}

		private function onRslLoad(e:Event):void
		{
			var logicClass:Class = viewerLoader.contentLoaderInfo.applicationDomain.getDefinition("tv.ustream.viewer.logic.Logic") as Class;
			viewer = new logicClass();
			viewer.volume = 0;
			this.addChild(viewer.display);
			playChannel(id);
		}

		private function playChannel(id:String = null):void 
		{
			var channelId:String = id;
			if(id == null) {
				id = default_channelID;
			}
			viewer.createChannel(id);
			addEventListener(Event.ENTER_FRAME, onStart);
			viewer.playing = true;
		}
		
		private function onStart(e:Event):void
		{
			if (!viewer.channel.streamRect) return;
			e.target.removeEventListener(e.type, arguments.callee);
			var vw:Number = viewer.channel.streamRect.width;
			var vh:Number = viewer.channel.streamRect.height;
			viewer.volume = vol;
			viewer.display.x = 0;
			viewer.display.y = 0;
			viewer.display.width = viewer_width;
			viewer.display.height = viewer_height = viewer_width * (vh / vw);
			visible = true;
		}



2012.01.11 | 

こんばんはmuchoです。
今日知ったんですが、addFrameScriptなる隠しメソッド?
があるとのこと

public function addFrameScript(frame:uint, notify:Function):void

言語バージョン : ActionScript 3.0
Playerのバージョン : Flash Player 9

指定したフレームにスクリプトを追加します。

こんな技が・・・もしかして使うかも?
ラベルでも飛びたいだろうということでクラスを作ってみました。
AddLabelScript.as



package  
{
	import flash.display.FrameLabel;
	import flash.display.MovieClip;
	import flash.display.Scene;

	public function AddLabelScript(mc:MovieClip, label:*, func:Function = null, arg:Array = null):void
	{
		var frms:Array = [];
		var f:Function;
		if(func != null){
			f = function():void{ func.apply(mc, arg); };
		}

		if (label is Number) {
			frms.push(int(label));
		} else if(label is String) {
			var ss:Array = mc.scenes;
			for each(var s:Scene in ss) {
				var ls:Array = s.labels;
				for each(var l:FrameLabel in ls) {
					if (l.name == label) {
						frms.push(l.frame);
					}
				}
			}
		}

		for (var i:int = 0; i < frms.length; i++ ) {
			var frm = frms[i];
			if (frm > 0 && frm <= mc.totalFrames) {
				mc.addFrameScript(frm, f);
			}
		}
	}
}

使うときは
AddLabelScript(this, "label1", function() {
	trace("label1 is "+ currentFrame);
});
とか
AddLabelScript(mc, this.totalFrames, function() {
	trace("last frame");
	this.stop();
	//ここでのthisはfunctionを埋め込んだmc
});


2011.11.22 | 

フルフラッシュのページから別URLに遷移して、
ブラウザの戻るボタンを押してFlashを再描画すると、
クリックイベントが取得できなくなる。という怪現象。
Firefoxで起こる現象のようです。
回避策はJSでした。


	window.onunload = function(){};

この1行で無事解決!

2011.10.05 | 

どうも、kaminalyです。まだ生きていますよ。

Adobe MAX 2011 in Los Angeles なタイミングで公開されたflashplayer11ですが、
windowsとmacで全然パフォーマンスが違ってアレ?っとなった話です。

あ、flashplayer11のダウンロードがまだの方はこちら
http://get.adobe.com/jp/flashplayer/

開発者用のdebug playerはこちら
http://www.adobe.com/support/flashplayer/downloads.html

(続きを読む...)