使用 AS3 / Flash CS4
好的感谢所有正在阅读本文的人。我的问题特别是我正在设计一个带有控件的用户界面。5 个按钮向左旋转、向右旋转、放大、缩小和自动旋转。界面本身工作正常,我可以追踪按钮点击,切换自动旋转按钮等......
我的程序读取一个 xml 文件。加载一些图像,用每个图像的链接填充数组,当单击图像时,加载器从 URL 加载 swf 并将其显示在屏幕上。没问题。
现在,我最初在 runtime_loaded.fla 库中拥有缩放控件用户界面,并且在同一个链接文档类中拥有鼠标侦听器。该接口与 runtime_loaded.swf 中的movieClip 在同一代码中时有效。
现在为了练习良好的编码,我决定从 runtime_loaded.fla 中删除 UI,并将其添加到 Main.fla。这是必不可少的,因为 main 将处理可能的 100 个图像/对象,每个图像/对象也都有自己独特的 swf 要链接。如果我决定改变界面的外观但保持函数调用不变,我基本上可以在 main.fla 中放入我想要的任意数量,而不是我必须为每个对象做的 runtime_loaded.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、鼠标事件侦听器和单击处理程序的步骤,然后是 var loaded_swf:Object; 的对象调用。
public static function rotateLeft():void
{
object.yaw(animation_turning_speed);
}
public static function rotateRight():void
{
object.yaw(-animation_turning_speed);
}
如果我运行 main.fla 并尝试单击按钮。有时候是这样的。
ReferenceError:错误 #1069:在 ThreedsKU39web 上找不到属性 rotateRight,并且没有默认值。在 MethodInfo-82() ReferenceError:错误 #1069:在 ThreedsKU39web 上找不到属性 rotateLeft,并且没有默认值。在 MethodInfo-83()