SpecialButtonコンポーネント よくある質問(FAQ)

コンポーネントを実用する際にありがちな質問をまとめてみました。

目次
FAQ更新履歴
トラブル系
要望系
その他

indexに戻る

FAQ更新履歴

2006/12/09 正式版公開準備に合わせて各種文言修正
2005/06/21 ベータバージョン公開

トラブル系

ボタンの枠外に及ぶテキストをラベルに適用するとテキストが枠外にはみ出して表示される

原因
バージョン6以前のPluginとSAplayerで閲覧すると起こるPlayer側のバグです。
バージョン7(2004)以降のPlugin、およびSAplayerで閲覧すれば正常に表示されます。

回避方法
閲覧者に最新のPlayerのインストールを促すか、
ボタンの枠内にテキストが収まるようにテキストおよびボタンのサイズを調節するか、
setAutoSizeをtrueに指定して下さい。

ラベルに外部画像としてswfファイルを読み込んだらrootのタイムラインが勝手に動き出した

原因
読み込んだswfファイル内でrootが指定されていると
読み込み元swfファイル(=ボタンを使用しているswfファイル)内のrootを参照してしまうため。

回避方法
読み込み元swfファイル内のrootを削除するか、
_lockroot(MX2004以降で使用可能)を要所で使用して下さい。

外部画像として読み込んだswfファイル内のボタンが押せない

原因
読み込んだswfファイル内のボタンの上に
SpcialButton本体の当たり判定が被(かぶ)さっているため

回避方法
setEnabledをfalseにすればSpcialButton本体のボタンの当たり判定が無くなり、
読み込んだswfファイル内のボタンが押下可能になります。

AutoSizeをtrueにしてラベルにswfファイルを読み込んだらボタンが全然違うサイズになった

原因
AutoSizeで取得するWidthとHeightは読み込み元swfファイルのステージサイズではなく
読み込み元swfファイルの1フレーム目に配置されているシンボルを全て統合したwidthとheightを取得するため
(つまり、1フレーム目の枠外にシンボルを設置しているようなswfは正しいサイズを読み込めません)

回避方法
読み込み元swfファイル内の1フレーム目の内容をステージサイズとまったく同じにするか、
AutoSizeをfalseにして正しい縦横値を手動で指定したのち、setLabelを実行して下さい。
(読み込み元swfファイル内の1フレーム目の内容をステージサイズとまったく同じにするには、
 rootのシンボル全てをステージサイズとまったく同じ大きさのマスクでかぶせると簡単です)

ラベルに外部テキストを読み込んだら文字化けした

原因
外部テキストの文字コードが「UTF-8」形式ではないため。

回避方法
「System.useCodePage = true;」をrootの1フレームに記載するか、
外部テキストをUTF-8形式に変更して下さい。

外部テキスト/外部画像が表示されない

原因
アドレスが間違っているか、自ドメイン以外のアドレスを参照している。
(例:http://geocities.jp/内にあるswfからhttp://www.infoseek.jp/内にあるswfを参照している)

回避方法
参照するswfファイルに「System.allowdomain」を指定して
外部アドレスのファイルを参照可能にするか、
外部アドレスの指定を諦めて正しいアドレスを指定して下さい。

ショートカットキーを設定したのに対応するキーでハンドラが起動しない

原因
テキストボックスにフォーカスが当たっている。
(むしろテキスト入力中にボタンのハンドラが動き出したらウザイでしょ?
 ボタンのショートカットキーを「Ctrl+C」にして、どっかのテキストボックスの内容を
 コピーしようとしたらボタンのハンドラが動いた!とか)

回避方法
テキストボックスからフォーカスを外してから
対応するショートカットキーを押下して下さい。

要望系

テキストラベルで「埋め込みフォント」を使いたい

ラベルの種類に「リンケージMC」を設定し、
リンケージを行うMCの中で埋め込みフォントを使用するか、
コンポーネントのシンボル「Flash UI Simple Compornents/Parts/SpecialButton_TextLabel」内にある
テキストボックス「Label_txt」と「Shadow_txt」のフォント名、および埋め込みフォントの情報を直接編集して下さい。

テキストラベルにhtmlタグを使用したい

ライブラリ『Flash UI Simple Compornents/Parts/SpecialButton_TextLabel』内にある
テキストボックス「Label_txt」と「Shadow_txt」の情報を直接編集するか、タイムライン上で

ボタンのインスタンス名.Body.Label_mc.TextLabel_mc.Label_txt.html = true;
ボタンのインスタンス名.Body.Label_mc.TextLabel_mc.Shadow_txt.html = true;

を指定すると、テキストラベルにhtmlタグも使用可能になります。
※ ただしこれは未サポートの機能なのでうまく動く保障はあんまりありません。

その他

重いんですけど

使われているのをまったく見たことのない
MXのボタンコンポーネントに比べれば機能の割には軽いほうだと思います。
なお、1フレームで複数個のボタンを一気に読み込むと
ボタンの初期化処理に時間がかかるため、
1フレームで初期化を行うボタンの数は5つ以内をお勧めします。
(1フレーム1個ずつだったらFPSの処理時間内に収まります)

設定項目が多すぎて面倒なんですけど

予めスキンを作成しておいて、作成したスキンを逐次参照させる方法をお勧めいたします。
また、スキン作成も面倒であればボタン背景の透明度をすべて0に設定し、
ラベルの種類をリンケージMCに変更して
リンケージMC側で外観を直接作成した方が早いと思います。

結局自作するんだったらこのコンポーネントの意味なくね?

うーん。


indexに戻る