AS3 / Flash CS4 の使用
これを読んでいるすべての人に感謝します。私の問題は、具体的には、コントロールを備えたユーザーインターフェイスを設計しています。左回転、右回転、ズームイン、ズームアウト、自動回転の5つのボタン。インターフェイス自体は正常に動作し、ボタンのクリックを追跡したり、自動回転ボタンを切り替えたりできます...
私のプログラムは xml ファイルを読み取ります。いくつかの画像をロードし、各画像のリンクで配列を埋めます。画像がクリックされると、ローダーが URL から swf をロードして画面に表示します。問題ない。
これで、元は runtime_loaded.fla ライブラリにズーム コントロール ユーザー インターフェイスがあり、リンクされた同じドキュメント クラスにマウス リスナーがありました。インターフェイスは、同じコード内にある場合、runtime_loaded.swf 内の movieClip と連動します。
適切なコーディングを実践するために、runtime_loaded.fla から UI を削除し、Main.fla に追加することにしました。これは不可欠です。なぜなら、メインは、それぞれがリンクする独自の独自の swf を持つ可能性のある数百の画像/オブジェクトを処理するからです。インターフェイスの外観を変更することに決めたが、関数呼び出しは同じままにすると、すべてのオブジェクトに対して実行する必要がある runtime_loaded.fla の代わりに、必要な数を main.fla に入れることができます。 .
ファイル構造
Main.fla <- interface in the library. 5 mouse event functions. Inside each function calls
a property of loaded_swf (loaded_swf.rotateLeft, loaded_swf.rotateRight) etc...
Runtime_loaded.fla <- links specificObject.as in properties (AS3/CS4)
specificObject.as <- has 5 public static functions{ rotateRight, rotateLeft, zoomIn, zoomOut, toggleAutoRotate }
コード
//showFlashBox
function showFlashBox(temp_string:String):void {
if(!flash_box_on){
var temp_top:uint = numChildren;
addChildAt(FlashBoxContainer,temp_top);
newXButton.addEventListener(MouseEvent.CLICK, flashBoxXClick);
1. addChild(new_loader);
2. var url:URLRequest = new URLRequest(temp_string);
new_loader.x = 0;
new_loader.y = 0;
new_loader.load(url);
3. new_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, gotSwf);
flash_box_on = true;
}
}
function gotSwf(e:Event){
4. //loaded_swf = e.target.content;
trace(e.target.content);
5. new_zoom_controls.button_minus.addEventListener(MouseEvent.CLICK, zoomOutFunction);
new_zoom_controls.button_plus.addEventListener(MouseEvent.CLICK, zoomInFunction);
new_zoom_controls.button_left.addEventListener(MouseEvent.CLICK, rotateLeftFunction);
new_zoom_controls.button_right.addEventListener(MouseEvent.CLICK, rotateRightFunction);
new_zoom_controls.button_rotate.addEventListener(MouseEvent.CLICK, toggleRotateFunction);
function rotateRightFunction(e:MouseEvent){
6. //loaded_swf.rotateRight();
}
function rotateLeftFunction(e:MouseEvent){
//loaded_swf.rotateLeft();
}
function zoomInFunction(e:MouseEvent){
//loaded_swf.zoomIn();
}
function zoomOutFunction(e:MouseEvent){
//loaded_swf.zoomOut();
}
function toggleRotateFunction(e:MouseEvent){
//loaded_swf.toggleAutoRotate();
if(new_zoom_controls.button_rotate.currentFrame == 1){
new_zoom_controls.button_rotate.gotoAndStop(2);
}
else new_zoom_controls.button_rotate.gotoAndStop(1);
}
new_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, gotSwf);
}
手順 1 ~ 6 に従うと、.swf、マウス イベント リスナー、およびクリック ハンドラをロードする私の手順が表示されます。
public static function rotateLeft():void
{
object.yaw(animation_turning_speed);
}
public static function rotateRight():void
{
object.yaw(-animation_turning_speed);
}
main.fla を実行してボタンをクリックしようとすると。これが起こります。
ReferenceError: エラー #1069: プロパティのrotateRightがThreedsKU39webで見つからず、デフォルト値がありません。MethodInfo-82() ReferenceError: エラー #1069: ThreedsKU39web でプロパティの rotateLeft が見つからず、既定値がありません。MethodInfo-83() で