スポンサーサイト

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

[AIR] エラー:1037 パッケージをネストすることはできません。

何をやりたかったかといえば、Button のマウスオーバーなどしたときの
色の変更をしたかったのですが、これはスタイルに値を放り込むだけでは無理で、
リファレンスを参照すると Skin を指定しろ、Skin はクラスになってるからクラスを
定義してそのクラスを指定しろ、とあるわけです。

Button - ActionScript 3.0 言語およびコンポーネントリファレンス
http://livedocs.adobe.com/flex/3_jp/langref/mx/controls/Button.html

selectedOverSkin
型: Class CSS 継承: no
トグルボタンが選択され、マウスがコントロール上にあるときに、背景と境界のスキンとして使用するクラスの名前です。 デフォルト値 : "mx.skins.halo.ButtonSkin".



さいでっか、とばかりにクラスを定義した as ファイルを作ってみる。
似たような話があったので下記を参照してみる。

フォーラム - Flex User Group - ボタンのダウン時のベースの色
http://www.fxug.net/modules/xhnewbb/viewtopic.php?topic_id=2514&post_id=10259

さてこの新しく定義したスキンを記述した as ファイルを FlexBuilder 上では
src 直下に作成し、他の関数を書いた as ファイルのように mxml ファイルから
mx:Script source="xxxxx.as" の形でインクルードしてみる。
すると、

1037: パッケージをネストすることはできません。



というエラー。これだけについては理由がすぐ見つかって、細かい理屈はさておき
インクルードした時点で as ファイルは読み込まれているから、都合同じパッケージを
2回参照して上記のエラーになる
とのこと。

2008-02-07 - Paradigm Shift Design - MXMLアプリケーションとActionScriptファイルの分離
http://d.hatena.ne.jp/kent013/20080207

要するに,package宣言やclass宣言はASファイルを読み込んだ段階でもうすでに終わっているということ.



じゃあ具体的にどうすればいいのかということで、さっきのインクルードをなくしてみると
当たり前だけどエラーはなくなって、ただ新しく作ったクラスは参照できないから
ボタンのほうでそのスキンを指定すると「そんなん知らんよ」と言われます。これも当然です。

わからんときは基本に戻ろう、ということでヘルプを見ます。

ActionScript のシンプルなビジュアルコンポーネント
 ActionScript コンポーネントについて

http://livedocs.adobe.com/flex/3_jp/html/help.html?content=ascomponents_2.html#814267

なんかかなりそれっぽいことが書いてある。

再利用可能なコンポーネントを ActionScript を使用して作成し、Flex アプリケーション内でこれらのコンポーネントを、MXML タグとして参照します。ActionScript を使用して作成されたコンポーネントは、グラフィカルエレメントの格納、カスタムビジネスロジックの定義、または既存の Flex コンポーネントの拡張を行うことができます。



「MXML タグとして参照します」とあり、具体的なサンプルもある。
手元のものでは具体的に以下のようにした。

・src ディレクトリに専用のディレクトリ myComponents を追加した
・そこにクラスを定義した as ファイルを置く
 (たぶん名前はなんでもいい。クラス名と同じなのが無難?)
・参照する mxml からこのクラスを参照させる
 ( xmlns:MyComp="myComponents.*" とか )
・実装したいボタンに、スキンの指定を行う
 ( selectedOverSkin="myComponents.CustomButtonSkin" とか )


これでOK。
ツボとしては package が入ったファイルはただインクルードするだけだとだめよという話。



Flex 3.4プログラミング入門Flex 3.4プログラミング入門
(2009/10)
宮田 亮

FlashでWebアプリをパワーアップ。最新FLex SDK 3.4の機能から次期Flex 4の開発コンセプトまで。最強「RIA開発環境」の最新機能を知る。


[改訂版]ActionScript3.0プログラミング入門 for Adobe Flash CS4/CS3[改訂版]ActionScript3.0プログラミング入門 for Adobe Flash CS4/CS3
(2009/07/23)
大津 真

基礎から学んで、ずっと使える。

バージョン3.0になり、本格的なオブジェクト指向言語に進化を遂げたActionScript。本書は、Flashの基本機能を理解された方を対象に、 ActionScript 3.0によるプログラミングを基礎から解説したものです。

※本書は、2008年2月に発行された『ActionScript3.0プログラミング入門 for Adobe Flash CS3』を、CS4にも対応させた改訂版です。

スポンサーサイト
検索フォーム
リンク
最新記事
最新コメント
カテゴリ
RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。