- ベストアンサー
下記のページでFlashのサンプルコードまねしたいのですが、どのようにしたらいいかわかりません。
http://www.newbreed-web.net/blog/?p=70 Flash初心者なので、このコードをどうしたらいいか分かりません。 ちなみに、macOSX、FlashCS4です。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
「サンプルコードをまねしたい」 のではなくて, 「サンプルコードを使いたい」 ということでしょうね。 しかし,書かれていらしゃるページは, そのページの上に書かれてありますように, カテゴリが, Home > actionscript | flex > yugop.comのテキスト表示がかっこ良いのでまねしてみた ですよ。 つまり Flash ではなく Flex 用の ActionScript コードのようです。 Flash と Flex は ActionScriptの定義方法 や XMLの定義方法や扱い方がちょっと違うので, うまく動作しないのではないかと思います。 あと, なんとか無事に動作させたとしても,かなり汎用性の低い ActionScript だと思います。 そういうわけでかなり問題アリですが, 一応その難アリ状態で動作させる方法を書きます。 Flash CS4 を起動します。 最初に表示されるパネルで [新規作成] 欄にある [Flash ファイル(AS 3.0)] を選択するか, もしくは [ファイル]→[新規]で [Flash ファイル(AS 3.0)] を選択し, 新規ドキュメントを作成します。 [ウィンドウ]→[コンポーネント] にチェックを入れた状態にして, [コンポーネント]パネル を表示させます。 [コンポーネント]パネル の中の [User Interface] ツリーを展開して, [TextInput]コンポーネント を選択し, ステージ上に2回ドラッグ&ドロップして, 2コの [TextInput]コンポーネント をステージ上に適当に配置します。 [ウィンドウ]→[プロパティ] にチェックを入れた状態にして, [プロパティ]パネル を表示させます。 2コの [TextInput]コンポーネント のうち1つを選択した状態で, [プロパティ]パネル の <インスタンス名> となっている欄に, input_textinput という文字列を記入します。 これで [TextInput]コンポーネント のうち1つには, 「input_textinput」 というインスタンス名が付いたことになります。 2コの [TextInput]コンポーネント のうちもう1つを選択した状態で, [プロパティ]パネル の <インスタンス名> となっている欄に,今度は display_textinput という文字列を記入します。 これで [TextInput]コンポーネント のうち1つには, 「display_textinput」 というインスタンス名が付いたことになります。 [ウィンドウ]→[コンポーネントインスペクタ] にチェックを入れた状態にして, [コンポーネントインスペクタ]パネル を表示させます。 2コの [TextInput]コンポーネント のうち 最初に「input_textinput」 というインスタンス名を付けた方を選択して, [コンポーネントインスペクタ]パネル の [パラメータ]タブ にある [text] という欄の右の空欄に たとえば abcdefghijklmn と記入します。 ここまでで構造物の作成は一応終わりです。 次にスクリプトコードの記述に入ります。 ステージ下にある [タイムライン] を表示させます。 今のところ1レイヤー1フレームしかないと思うので, レイヤーを1つ増やして2レイヤーにします。 その増やした方の空白キーフレームを選択した状態で, [ウィンドウ]→[アクション] にチェックを入れた状態にして, [アクション]パネル を表示させ, とりあえず書かれていらっしゃるページのスクリプトコードを [アクション]パネル にコピペで貼り付けます。 これで [アクション]パネル には, public var char_codes:Object = new Object(); public var stack:Object = new Object(); …略… before_text = display_text; display_textinput.text = display_text;//mxmlのTextInputへ } のようなものが記入されている状態になります。 [アクション]パネル の上の縁にある 虫眼鏡A のアイコンボタン(検索ボタン) をクリックして, 検索文字列(N) の欄に [public ] を記入します。 置換(W) の欄はそのまま空欄にしておいて, [すべて置換(A)] ボタンをクリックします。 これでスクリプト中の [public ] が全て消えます。 そして,その長いスクリプトの最後の行に, ----------- change(); ----------- という1行のスクリプトを追加記入します。 これで,定義した関数 change が実行されるようになります。 この状態で [アクション]パネル は, var char_codes:Object = new Object(); var stack:Object = new Object(); …略… before_text=display_text; display_textinput.text=display_text;//mxmlのTextInputへ } change(); のようになっているということになります。 あとは動作検証です。 [制御] → [ムービープレビュー] で動作確認ができると思います。 スクリプトの内容自体(アルゴリズム自体)はよく考えられていて良いとは思うのですけどね。 書かれていらっしゃるページの下にも, > まだ効率のよい方法がありそうなので、 > 改善点などありましたらご教授願えるとありがたいです。 と書かれてありますように, これでは汎用性がないというか全く実用的なものではありません。 色々検討&研究して使えるように(使いやすいように)改善してみてください。
お礼
大変ご丁寧に説明して頂き、ありがとうございます! ActionScriptがFlash以外にもあるとは知りませんでした。 BlurFiltanさんのように、惜しげもなく知識を広めてくださる方がいらっしゃるのは、とてもありがたいです! これからも色々勉強してがんばります。ありがとうございました!