• 04 «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • » 06
ASOK?
ActionScriptでFlashつくるよ
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
page top
ASファイルをコピーすれば使えるんだって。

FlashRemotingをFlashCS3以降のAS2で使えるようにする
スポンサーサイト
page top

いまさらAS2用デバッグツールを試す。
ThunderBoltとOutを試したが、どちらも動かず。Xrayでやっとうまくいった。

Xray ( The AdminTool ) Open Source Flash

Xray概要

swf内部を調査するためのビューワ("Interface"と呼称)と、swfと"Interface"との通信をするためのライブラリ("Connector"と呼称)に大きく分かれている。2つともないと動かない。
InterfaceとConnectorそれぞれが、複数バージョン存在するのでややこしい。

FlashIDEで使う場合の準備

  1. Interfaceの"SWF Only"をダウンロードする[⇒Xray]。
  2. Connectorは"component package for AS2"をダウンロードする[⇒Xray]。エクステンションなので、インストールしてFlashIDEを再起動。
  3. "コンポーネント"パネルから"Xray Connector"コンポーネントをステージにドラッグ&ドロップして、ムービープレビューする。
  4. Interfaceを起動する。

使い方

  1. Interface左パネルの"GO"ボタンを押すと、swf内部のオブジェクト、プロパティが見れる。
  2. Interface右上の"Output"をクリックしてOutputパネルを表示。下の"Show Output?"にチェックするとデバッグ用出力を表示できる。

出力方法

global.tt()で出力

引数に複数オブジェクトを渡すことができ、ObjectやArrayなどもサポートされている。

_global.Xray.xrayLoggerで出力

_global.tt()と同様だが、複数メソッドを使い分け可能。

LogManagerクラスで出力

出力レベル設定ができるようだが、コンパイルエラーで使えない…。

AS2版

LogManager.setLevel()など、一部機能が使えない模様…。

公式情報

日本語記事

page top
サブクラスのコンストラクタから、スーパークラスのコンストラクタが自動で呼び出されるのがうっとおしい。抑制する方法はないのだろうか。

super()記述しなくても、引数なしで自動で呼び出される。サブクラスのコンストラクタより先に。
page top
AS2のビルトインクラスの中で、使ったことのないクラス。

CustomActions
オーサリングツールに登録されているカスタムアクションを管理。

System.IME
オペレーティングシステムの IME (Input Method Editor : 入力方式エディタ) を直接操作できます

mx.lang.Locale
「SWF ファイルで表示する多言語テキストを制御できます。」アプリケーションのようにテキストリソースをXML化して使用言語によって切り替える仕組みのよう。

flash.text.TextRenderer
TextRenderer クラスには、埋め込みフォントの高度なアンチエイリアス機能が用意されています。

TextSnapshot
TextSnapshot オブジェクトを使用すると、ムービークリップ内の静止テキストを操作できます。
page top

TextFieldをクリックしたら全選択という動作がなかなかできず。

TextFieldを全選択自体は、

// target = 対象TextField
if(Selection.getFocus()!=target){
	Selection.setFocus(target);
}
Selection.setSelection(target.length,0);
というコードでできるが、タイミングのせいでうまくいかない。

上記コードをonSetFocusイベントで実行

Selection.getFocus()は対象TextFieldになっているが、Selection.setSelection()を実行してもちゃんと動かない。
Selection.getBeginIndex()、getEndIndex()とも-1になっている。

onSetFocusイベントから1フレーム遅延で実行

Selection.setSelection()は機能するが、マウスアップイベントが効いてしまうらしく、全選択にならない。

結局以下の方法で実装。

  1. TextField.onSetFocusでMouse.addListener()する。
  2. Mouse.onMouseUpイベントから1フレーム遅延させて、Selection.setSelection(target.length,0);を実行。

まどろっこしい!
きっともっとまともな実装があるはず。誰か教えてください…

page top
Copyright © 2005 ASOK?. all rights reserved.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。