ページ読み込み時にFlashにフォーカスを与える(firefox)

2010年2月17日 — takeo

Flashでタイピングゲームを作っていて、ページ読み込み時にFlashにフォーカスがあたらなくて使いづらいなと思いやり方を調べてみた。ページ読み込み時にjavascriptでfocus();するといいらしいが、firefoxでフォーカスできない。

Javascriptのfocusはこんな感じ。
swfobjectを使っている場合は、addLoadEventやaddDomLoadEventのイベントで呼べばいい。

	var flashObjectId =  "sample";
	var expressInstallPath = "../../../js/libs/swfobject/expressInstall.swf";
	var flashTargetVersion =  "9.0.0";
	var flashvars = {};
	var params = {};
	swfobject.embedSWF("StartFocusSapmle.swf",flashObjectId, "320", "240", flashTargetVersion,expressInstallPath, flashvars, params);

	function setFocusOnFlash() {
	  var fl = document.getElementById(flashObjectId);
	  if (fl) { fl.focus(); }
	}

	if (swfobject.hasFlashPlayerVersion(flashTargetVersion)) {
		swfobject.addLoadEvent(setFocusOnFlash);
		//swfobject.addDomLoadEvent(setFocusOnFlash);
	}

ただ、これだとfirefoxはだめ。調べているうちにwmodeをopaqueかtransparentに設定すればいいという情報が。いろいろ試してみると、

ページ読み込み後にFlashに自動フォーカスするサンプル(wmode:”window”)

ページ読み込み後にFlashに自動フォーカスするサンプル(wmode:”opaque”)

ページ読み込み後にFlashに自動フォーカスするサンプル(wmode:”transparent”)

確かに、wmodeをopaqueかtransparentに設定するとフォーカスがあたった。
ただし、このwmodeは曲者で、opaqueやtransparentに設定すると日本語に入力がおかしくなる。firefoxでは、まともに入力さえできない。
flash側からExternalInterfaceでjavascriptのfocus();をやってみたりしたが実現できず。断念。

今回のタイピングゲームは英数字だけなのでこれでいいのだが、普通に使うのには中途半端だ。
英語にかぎればこれでなんとかなる(日本語の入力をするFlashを作ることもあまりないのだけど)

今回はこれでいこう。

	var flashObjectId =  "sample";
	var expressInstallPath = "../../../js/libs/swfobject/expressInstall.swf";
	var flashTargetVersion =  "9.0.0";
	var flashvars = {};
	var params = {wmode:"transparent"};
	swfobject.embedSWF("StartFocusSapmle.swf",flashObjectId, "320", "240", flashTargetVersion,expressInstallPath, flashvars, params);

	function setFocusOnFlash() {
	  var fl = document.getElementById(flashObjectId);
	  if (fl) { fl.focus(); }
	}

	if (swfobject.hasFlashPlayerVersion(flashTargetVersion)) {
		swfobject.addLoadEvent(setFocusOnFlash);
		//swfobject.addDomLoadEvent(setFocusOnFlash);
	}

※あと、opaqueやtransparentモードにすると、FlashのEvent.ACTIVATE、Event.DEACTIVATEイベントが拾えないみたいだ。きもちわるい
サンプルソース

package com.cubdesign.sample.startfocus {
	import fl.controls.Label;
	import fl.controls.TextInput;

	import flash.display.Graphics;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.external.ExternalInterface;

	/**
	 * @author takeo
	 */
	public class StartFocusSapmle extends Sprite {
		private var label : Label;
		private var text : TextInput;

		public function StartFocusSapmle() : void {
			if (stage) {
				init();
			} else {
				addEventListener(Event.ADDED_TO_STAGE, init);
			}
		}

		private function init(e : Event = null) : void {
			removeEventListener(Event.ADDED_TO_STAGE, init);
			stage.addEventListener(Event.ACTIVATE, windowActivete);
			stage.addEventListener(Event.DEACTIVATE, windowDeActivete);

			drawBackground();

			label = new Label();
			label.text = "読み込み完了";
			addChild(label);

			label.move(100, 70);

			text = new TextInput();
			addChild(text);

			text.move(100, 100);

			//ExternalInterface.call("setFocusOnFlash");

			text.setFocus();
		}

		private function drawBackground() : void {
			var g : Graphics = this.graphics;
			g.beginFill(0xffffcc);
			g.drawRect(0, 0, 320, 240);
			g.endFill();
		}

		/**
		 * フォーカスアウト
		 */
		private function windowDeActivete(event : Event) : void {
			label.text = "windowDeActivete";
		}

		/**
		 * フォーカスイン
		 */
		private function windowActivete(event : Event) : void {
			label.text = "windowActivete";
			text.setFocus();
		}
	}
}

ActionScript3.0 UML

2006年12月4日 — takeo

いつのまにかEnterprise ArchitectがActionScript3.0対応を行っていた。
UMLをどうしようかって考えていた矢先、朗報◎。

ActionScript2対応 Enterprise Architect 6.0

2005年12月5日 — takeo

UMLツール、Enterprise Architect 6.0でようやくActionScript2が正式対応になった。

これでActionScriptのUMLが簡単にかけるようになるかのしれない。Enterprise Architect 5.0の時は買うか買わまいか延々と悩んでしまったが、今回は買。ちょっと高いけど。

また大がかりな変更が・・・ActionScript3.0

2005年10月18日 — takeo

fladdict.net blogの記事「恐怖!! 違いすぎるAS2とAS3」から。

ActionScript2.0とActionScript3.0の違い一覧

を見るとわかるとおり、かなり大きな変化が・・・。

V1(MX)コンポーネントのアーキテクチャー(フレームワーク)を理解してこれからコンポーネント作りでもって矢先にV2(MX2004)コンポーネントの登場!っで、売り出しにもどる。

最近やっとV2が分かってくると、今度は、また違うアーキテクチャーが・・・。

まーV2は、_global変数の使いすぎでなんだかわけわかんなくなっていたので今回のアーキテクチャーに期待している。かなりJavaっぽい仕様なので、UMLとか開発ツールとか、どんどんいいのが出そう。

ここまでするんだったらいっそJavaにすればって思う。

アーキテクチャーを理解するには、かなりの英語力が必要。これはJavaも同じ。(いいドキュメントは全て英語・・。)僕なんか、翻訳ソフト全開で理解しないといけない。多分いまの(AS2)のソースやコンポーネントは大工事が必要になりそう。その分見返りも多そうだが・・。

ActionScript3.0までに英語の勉強を本格的に始めねば・・。

FDT発売!!

2005年8月22日 — takeo

ついに、EclipseのActionScriptプラグイン「FDT」が発売に!!

199EUROって価格のわりに正直期待はずれなのかも。でも、
ASDTのUTF-8のBOMマークの問題も解決して、安定的に動いていて、Eclipseでやるならこれかなって思う。

まー高いけど「Ant+FDT+MTASC+Swfmill+flashout」ってのが快適な環境なんだろなー。

とりあえず割高なのでBugs Reportにいろいろグチッていきたい。TODOに日本語が使えないなど。。

購入は、トライアル30日使いきってからでもいいのかも。

AS2Doc

2005年5月17日 — takeo

20050517.jpgAS2Doc
仕事が一段落し、ずいぶんソースがたまりそろそろ整頓しないと、って思いJavadoc風のドキュメントが作りたくなりいろいろ物色。

もちろん無料ツールを探したが、ActionScriptのドキュメントツールはそー多くない。

as2api
フリーだが、なんとなく出来上がったドキュメントが微妙な感じがして、感覚的に×した。

BLDoc
トライアル5000ラインっていう制限で、却下。普通5000ラインかるく超えてしまう×。
買ってしまえば、って思ったが、買い方がよくわからず×。

AS2Doc
トライアル1Classのみっていう最悪なものだったが、オンラインショッピングがしっかりしていたので信頼?して買ってみた。自分でもせっかちだったと思う。ユーロの買い物は初めて。

実際使ってみると割りといい。日本語も問題なく使えて、コマンドラインにも対応していたため、SPEYエディターのメニュー「TOOL」から呼び出す設定をしたりと、早速いろいろJavadoc化をした。

やはり不満はある。

まず出来上がったデザインが気に入らない。→これは、StyleSheetで修正できるので◎。

イチイチ全部書き出しを行うため時間がかかる。→差分だけってのはできないのか?

対象をprivateとpublicに設定できるのはいいのだが、このパッケージはprivateのみでこいつは、privateとpublic両方でっていう設定ができない。
→MacromediaのClassはpublicのみでいい。自分が作ったClassはprivateとpublic両方でっていったことに使えないのは大変不便。

まだ、買ったばっかりでよく読めばできるのかもしれないが、TOOLとしては70点。でも便利なToolってことには変わらない。

ActionScript 2 Compiler搭載!!。

2005年3月28日 — takeo

構文チェックができないことが、弱点だったSE|PY ActionScript Editorに、構文チェック機能が搭載され、また一歩完成度が増した。

SE|PY ActionScript Editor1.0.6.66でActionScript 2 Compiler(MTASC)が搭載され、構文チェックができるようになった。 MTASCをダウンロードし、exeファイルを指定すると、SE|PY ActionScript Editorで、構文チェックができる。エラー箇所を自動で開いてくれて、とても便利、重宝しそう。このバージョンは、日本語がうまくサポートされていないのが難点。日本語を表示するには若干コツが必要。
はやく、正規リリースをしてほしい。

AS Development Tool (asdt)Plugin for Eclipse Update!!

2005年2月27日 — takeo

AS Development Tool (asdt)Plugin for Eclipseが久しぶりのアップデート(Version 0.0.7)を行っていた。
つぶれたかと思っていたところに、このアップデート。安心した。これからも頑張ってほしいところ。
「Support of mtasc」が気になって、ただいま調査中。

Changes:
0.0.7

- Open declaration;
- Open supertype;
- Texthoover (popup with declaration);
- Improved outline (better performance and new features);
- Codecompletion for Javadoc;
- Codecompletion for parenthesis;
- Show in navigator;
- Double Line (duplicate line);
- Toggle comment;
- Editor settings added;
- Project wizard added;
- Class wizard added;
- Classpath can now be set;
- Classpath for core classes can now be set;
- Templates added;
- Support of mtasc;

変化:
0.0.7

- 宣言を開いてください;
- 「スーパー-タイプ」を開いてください;
- Texthoover(宣言があるポップアップ);
- 改良されたアウトライン(より良い性能と新機能);
- JavadocのためのCodecompletion;
- 挿入句のためのCodecompletion;
- ナビゲータで目立ってください;
- 線を倍にしてください(線をコピーしてください);
- コメントを切り換えてください;
- 加えられたエディタ設定;
- プロジェクトウィザードは加えました;
- クラスウィザードは加えました;
- 現在、Classpathを設定することができます;
- 現在、コアのクラスのためのClasspathを設定することができます;
- テンプレートは加えました;
- mtascのサポート;

翻訳 by Excite 翻訳

ぽんこつ「秀丸」

2005年2月17日 — takeo

ぽんこつ秀丸に仕事中悩まされた。
ActionScriptのClassファイルを秀丸で開かれ、保存され、意味不明なコンパイルエラー(~Classがみつかりません)に悩まされた。
よくよく調べたところ、秀丸でのUTF-8の扱い方による問題だった(BOM問題)。さすが、ぽんこつ秀丸。ユニコードが苦手。Flashで開き保存しなおすと解決した。やっぱり秀丸は嫌いだ(見た目など)。ぽんこつ秀丸も、バージョンアップすると(3→4)平気らしい。
世間のプログラマの秀丸びいきもそろそろやめてほしい。僕は、EmEditorが好きだ。

ActionScript用にUMLを描くToolは何がいいのか?

2005年2月6日 — takeo

最近Flashの仕事のドキュメント化に悩んでいる。
FlashもActionScript2になりクラスベースの設計が出来るようになってきた。
クラスベースになってくると、ちょこっとActionScriptをやっています・・って人には簡単に理解できるものではなくなってきてる。
よって、プログラマの仕事に近づいてきている。プログラマに説明しようとすると、or複雑な設計が行われると、Flashも仕様書が必須になってきていると思う。
他人(ここでは、プログラマ)に理解してもらうためには、Flashにも仕様書、設計図が必要になってきていると思う。いや必須かも。ここがFlashデベロッパーが軽く見られている原因だと思う。Flashデベロッパーがしっかりとした仕様書を書きはじめたら、現場の考え方も変わるのではないか・・・ってことで、UMLに注目している。

実際、UMLを描くのは、それ相応のToolがないと、本当に面倒だ。
そこで、いろいろUMLToolを試している。
UMLToolは、Java用に、Javeで作られているToolが多い。UMLからソースファイルを生成する機能もある。
ActionScriptには、そんな機能は要らない。いやほしいけど、そんなソフトは、ない。(実は、2つあるが、微妙・・)

すなおに、ActionScriptの設計に使えて、ほかのプログラマの人たちが読めて、インポートできればいいだけだ。

Enterprise Architect(EA) – UMLモデリングツール
はどうだろう???

(c) 2010 cubdesign | powered by WordPress with Barecity