我正在使用Flash Pro(CS5)中的Actionscript 3.0开发一个项目。我想创建一个确认框。如果我使用Flex SDK,我可以使用 mx.controls 包中的Alert类来完成此操作。但是,似乎标准Flash库中没有类似的控件,任何数量的Google搜索引导我进入Flex引用。
答案 0 :(得分:5)
试试这个课程
package com.whatever {
//Imports
import flash.display.Shape;
import flash.display.Sprite;
import flash.geom.Rectangle;
import flash.events.MouseEvent;
//Class
public class AlertBox extends Sprite {
//Vars
protected var box:Shape;
protected var yesBtn:Sprite;
//Constructor
public function AlertBox($:Rectangle):void {
//Initialise
box = new Shape()
yesBtn = new Sprite()
addChild(box)
addChild(yesBtn)
//Render
with (box.graphics) {
lineStyle(1)
beginFill(0, 0.4)
drawRect($.x, $.y, $.width, $.height)
endFill()
}
with (yesBtn.graphics) {
lineStyle(1, 0x00FF00)
beginFill(0x00FF00, 0.4)
drawRect($.x+$.width-100, $.y$.height-40, 80, 20)
endFill()
}
//Events
yesBtn.addEventListener(MouseEvent.CLICK, yesClickHandler, false, 0, true)
yesBtn.addEventListener(MouseEvent.MOUSE_OVER, yesOverHandler, false, 0, true)
}
//Handlers
protected function yesClickHandler($):void {}
protected function yesOverHandler($):void {}
答案 1 :(得分:2)
您说您无法在AS3中导入mx.Controls,但以下内容应该适用于flex 4项目:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
creationComplete="init()">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
private function init():void
{
Alert.show("This is an Alert!!!");
}// end function
]]>
</fx:Script>
</s:Application>
<强> [UPDATE] 强>
在意识到我误解了这个问题后,我在互联网上查找了AS3项目的警报组件,并发现了以下内容:
http://developer.yahoo.com/flash/astra-flash/alertmanager/
我要尝试创建flex框架的Alert控件的副本,然后再次更新我的答案。
答案 2 :(得分:2)
如果你的最终swf要在浏览器中运行并且具有脚本访问权限,你可以使用JavaScript PopUp Boxes中的一个:
if(ExternalInterface.available) {
if (ExternalInterface.call("confirm", "Should I trace 'Yes'?")) {
trace("Yes"); // user clicked Okay
} else {
trace("User canceled or the call failed");
}
}
我很确定这会冻结Flash UI循环,直到JavaScript函数返回,因此请确保在完成所有操作时调用它。
答案 3 :(得分:0)