
コンポーネントのコンボボックスでこのように書きました。
コンボボックスの選択肢とは別にテキストをクリックするとフォント名を取得します。
クリックしたテキストに設定されているフォント名を、コンボボックスのセレクト値に
したいのですが、どうすればいいでしょうか?
■エラー内容
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。
at test/changeHandler()
■AS3
package
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
import fl.events.*;
import fl.controls.*;
import fl.data.DataProvider;
public class test extends MovieClip
{
var comboData:Array = new Array(
{label:"フォント1"},
{label:"MS ゴシック"},
{label:"フォント3"}
);
var combobox_cb:ComboBox;
var combobox_cb:ComboBox;
var format:TextFormat;
var text:TextField;
public function test()
{
init();
}
private function init():void
{
combobox_cb = new ComboBox();
combobox_cb.dropdownWidth = 200;
combobox_cb.width = 200;
combobox_cb.move(150, 50);
combobox_cb.dataProvider = new DataProvider(comboData);
combobox_cb.prompt = 'フォント2';
format = new TextFormat();
format.font = "MS ゴシック"
text = new TextField();
text.defaultTextFormat = format;
text.text = 'テキスト';
addChild(combobox_cb);
addChild(text);
text.addEventListener(MouseEvent.CLICK, changeHandler);
}
private function changeHandler(e:Event):void
{
trace(e.currentTarget.getTextFormat().font);
combobox_cb.selectedItem.label = e.currentTarget.getTextFormat().font;//ここでエラー
}
}
}
No.1ベストアンサー
- 回答日時:
まず...,
大きく誤解をされているように思うのですが。。。
combobox_cb.selectedItem.label = ○○;
↑これだと(仮にこれが通用したとしても),
コンボボックス「combobox_cb」で選択しているアイテムのラベルが「○○」になってしまうだけですよ。
わかりますでしょうか?
他のものに喩えるなら
「バッター(打者)をAからBに変更する」
のではなくて
「バッター(打者)の名前をAからBに変更する」
みたいな感じになるというか。。。
つまり
「選択アイテム自体を切り替える」のではなくて
「選択されたアイテムのラベルを変える」になってしまうということです。
(場合によっては同名のラベルがどんどん増えていくことになる。)
そうではなく,
「選択アイテム自体を切り替える」」のでしたら,
selectedItem.label ではなく
selectedIndex を変える必要があります。
それと...,
スクリプト中に次の1行↓がありますよね。
combobox_cb.prompt = 'フォント2';
この prompt を設定した場合
コンボボックスのアイテム 非選択時 には
デフォルトでその prompt である「フォント2」の項目が選択されているということになるんです。
selectedIndex で言うところの -1 が選択状態になるということです。
この prompt には label というものがそもそもありません。
label などないのでそれを変えようとしても
> TypeError: Error #1009: null のオブジェクト参照…
となるのです。
あくまでも私の推測ですが
ですから二重に誤解されているような気がします。
というわけで
私の推測を含む↓修正例(★の部分)です。
//---------------------------------------
package
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
import fl.events.*;
import fl.controls.*;
import fl.data.DataProvider;
public class test extends MovieClip
{
var comboData:Array = new Array(
{label:"フォント1"},
{label:"MS ゴシック"},
{label:"フォント3"}
);
var combobox_cb:ComboBox;
//★↓重複しているので削除↓★
//var combobox_cb:ComboBox;
var format:TextFormat;
var text:TextField;
public function test ()
{
init ();
}
private function init ():void
{
combobox_cb = new ComboBox();
combobox_cb.dropdownWidth = 200;
combobox_cb.width = 200;
combobox_cb.move (150, 50);
combobox_cb.dataProvider = new DataProvider(comboData);
combobox_cb.prompt = 'フォント2';
format = new TextFormat();
format.font = "MS ゴシック";
text = new TextField();
text.defaultTextFormat = format;
text.text = 'テキスト';
addChild (combobox_cb);
addChild (text);
text.addEventListener (MouseEvent.CLICK, changeHandler);
}
private function changeHandler (e:Event):void
{
trace (e.currentTarget.getTextFormat().font);
//★---↓以下変更↓---★
//コンボボックスの各アイテムをループ
for (var i:int = 0; i <= combobox_cb.length-1; i++)
{
//もしラベルとフォント名が同じであれば
if (combobox_cb.getItemAt(i).label == e.currentTarget.getTextFormat().font)
{
//そのアイテムを選択
combobox_cb.selectedIndex = i;
//この forループ を抜ける
break;
}
}
}
}
}
//---------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数式中の文字をCambria Math以...
-
word
-
PowerPoint SmartArtの箇条書...
-
『μg』の読み方と意味。
-
名古屋の栄と錦は治安悪い?
-
「テキストデータで送ってくだ...
-
illustratorとExcelは連携出来...
-
イラレでダブルクリックで文字...
-
ASP.NET 動的コントロールのフ...
-
C言語の関数の実引数と仮引数の...
-
サクラエディタで二つのテキス...
-
Illustrator CS5 営業の「営」...
-
人体切断マジックの事でお聞き...
-
シーケンサ(PLC)学習ソフトを購...
-
PDF-XChange Viewer のタイプラ...
-
EXCELの関数で画像を引っ張って...
-
HPの投稿データをエクセルで一...
-
VBにて、非アクティブでフォー...
-
Yシャツが家族の誰のものなのか...
-
LINEのステメやプロ画は変える...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数式中の文字をCambria Math以...
-
DataGridViewでセル内の特定の...
-
VB2008 LabelやButtonのTextを...
-
VBAでpng画像に文字列を描画す...
-
DOSテキスト形式とは?
-
VBA超初心者です。
-
LibreOfficeのフォントワークの...
-
テキスト情報が生きたPDF作成を...
-
Flashでテキストアウトライン化...
-
アンチエイリアスなしのフォント
-
TCPDFの多言語について
-
Macの動作環境でApplepagesで源...
-
MAC用の書き込める履歴書テンプ...
-
Flashと普通のHTMLの表示速度に...
-
パワポにて、フォントのデフォ...
-
yugop.comで使われているフォン...
-
ダイアログベースでの様々なフ...
-
xmlからMCを作成して回転させた...
-
リッチエディットの独自描画で...
-
別環境でPublishすると文字がず...
おすすめ情報