0

このチュートリアルを読み始めました: http://active.tutsplus.com/tutorials/actionscript/creating-a-reusable-flash-uploader-with-actionscript-3-0-and-php/

私は FlashDevelop を使用しており、完全なコードを ActionScript ファイルに貼り付けました。私が受け取っているエラーは次のようなものです:

C:\Users\tempus\Documents\uploaderas\Uploader.as(30): col: 4 Error: Access of undefined property select_btn.
select_btn.addEventListener( MouseEvent.CLICK, browse );
^
C:\Users\tempus\Documents\uploaderas\Uploader.as(31): col: 4 Error: Access of undefined property progress_mc.
progress_mc.bar.scaleX = 0;

...

オブジェクトが宣言されていないためにエラーが表示されることは理解していますが (そして、オブジェクトはどこかからインスタンス化されているように見えます)、それらを宣言するためにどのように/何を含める必要があるかわかりません。解決策を教えていただけますか?

4

1 に答える 1

2

これは、ボタンが Flash IDE で作成されているためです (チュートリアルは Flash IDE を使用してコンパイルすることを意図していたため)。コードの側面にはボタンが存在しないため、そのエラーが発生します。

コードを介して要素を自分で作成するか、Flash IDE を使用して必要な UI 要素の swc/swf をエクスポートし、それを flashDevelop プロジェクトに含めることができます。私はあなたが後者をやりたいと思っていると思います -

Flash IDE で .fla を開き、ライブラリ パネルを開き、progress アセットを見つけて右クリックし、プロパティを表示します。[Export For ActionScript] オプションをオンにして、[Class] フィールドに「SelectBtn」などの一意の名前を付けます。「progress」アセットについても同じことを行います (「ProgressBar」などの異なるクラス名のみ)。Flash パブリッシュ設定に移動し、Flash タブで「export swc」を選択します。ファイルをパブリッシュし、パブリッシュされた swc を Flash 開発プロジェクト フォルダー (従来はプロジェクトの lib フォルダー) に配置します。

Flash 開発で、swc を右クリックし、[ライブラリに追加] を選択します。(もう一度右クリックしてオプションに移動し、完全に含めるオプションを選択する必要がある場合があります)。これで、Flash でセットアップしたクラスにアクセスできるようになりました。次に、コードで表示アセットを宣言して初期化します。

public var select_btn:SelectBtn = new SelectBtn();
public var progress_mc:ProgressBar = new ProgressBar();

また、その textField も行う必要があります。ただし、コードでそれを行うのが最も簡単です。

public var label_txt:TextField = new TextField();

このように、3 つの要素すべてで addChild を手動で配置して使用する必要があることに注意してください。フラッシュ内の位置を維持したい場合は、ステージ上のすべての要素を選択し、F8 を押してそれらをムービークリップに変換します。次に、ライブラリセットアップリンケージで他のものと同じように、「DisplayAssets」などのクラス名を付けて、新しいswcをエクスポートします。次に、コードは次のようになります。

public var select_btn:Sprite;
public var progress_mc:Sprite;

public function Uploader(){
    var displayAssets:DisplayAssets = new DisplayAssets();
    addChild(displayAssets);

    select_btn = displayAssets.select_btn;
    progress_mc = displayAssets.progress_mc;

    //the rest of the code
}
于 2012-08-21T17:33:15.413 に答える