如何在ActionScript3中创建警报对话框?

时间:2011-10-29 09:56:44

标签: actionscript-3 flex flash-cs5

我正在使用Flash Pro(CS5)中的Actionscript 3.0开发一个项目。我想创建一个确认框。如果我使用Flex SDK,我可以使用 mx.controls 包中的Alert类来完成此操作。但是,似乎标准Flash库中没有类似的控件,任何数量的Google搜索引导我进入Flex引用。

4 个答案:

答案 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)