2

フラッシュで開発されたコースウェアにカスタムのグーグル検索を実装しようとしていました。'Main'(Main.as)という名前のクラスを定義し、そこに検索コードを配置します。しかし、問題は、メインクラスが私のコースウェアに含まれている他のコードと競合していることです(私はコースウェアにコンボボックスと他の基本的なナビゲーションを持っています)。私はそれを解決する方法がわかりません。そのコードをタイムラインレイヤーに配置する方法はありますか?助けてください..ありがとう。これが私のメインクラスです:

package 
{
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.KeyboardEvent;
    import flash.ui.Keyboard;
    import flash.net.navigateToURL;
    import flash.net.URLRequest;

    public class Main extends Sprite
    {
        public function Main():void
        {
            searchButton.addEventListener(MouseEvent.MOUSE_UP, google);
            addEventListener(KeyboardEvent.KEY_DOWN, google);
            searchTerms.addEventListener(MouseEvent.MOUSE_DOWN, selectText);
        }

        private function google(e:*):void
        {
            if(e.type == "mouseUp")
            {
                navigateToURL(new URLRequest("http://www.google.com/search?q=" + searchTerms.text));
            }
            else if(e.keyCode == Keyboard.ENTER)
            {
                navigateToURL(new URLRequest("http://www.google.com/search?q=" + searchTerms.text));
            }
        }

        private function selectText(e:MouseEvent):void
        {
            searchTerms.setSelection(0, searchTerms.length);
        }
    }
}
4

1 に答える 1

2

共有した内容とここでのメッセージから、アプリケーション用にMainというドキュメントクラスを使用しながら、フラッシュIDEを介してコードを追加しようとしていると思います。

これを回避する方法はたくさんあります。

Mainクラスのインスタンスを追加する間、タイムラインコードを変更しないでおく必要があると仮定します。

  • 空のムービークリップをライブラリに追加します(SearchClassなど)。

  • ムービークリップのプロパティに移動し、[エクスポート]をクリックしてアクションスクリプトを表示します。

  • クラスをメインに設定します。Main.asがflaに対して外側にあることを確認してください。

  • このムービークリップをステージの任意のフレームまたはレイヤーに追加します。

  • ドキュメントクラスフィールドをクリアすることを忘れないでください。


補足として、クラスMainの名前をSearchClassなどの意味のある名前に変更する必要もあります。

クラスと基本クラスの設定について疑問がある場合は、

基本クラスは、クラスの機能を拡張したい場合にのみ使用します(たとえば、UI要素を追加することによって)。


次のように、タイムラインコードから直接クラスを呼び出すこともできます。

var main:Main = new Main();

addChild(main);

Main.asファイルがflaの隣にあることを確認してください...つまり、コンパイラがパスを使用できることを確認してください。

于 2012-12-27T03:35:22.587 に答える