2011-10-29 75 views
3

我正在使用Flash Pro(CS5)中的Actionscript 3.0進行項目工作。我想創建一個確認框。如果我使用Flex SDK,我可以使用mx.controls包中的Alert類來完成此操作。不過,標準的Flash庫似乎沒有類似的控件,任何Google的搜索引擎都只能讓我參考Flex引用。如何在ActionScript3中創建警報對話框?

+1

你聽起來困惑。所有的Flex控件都是基於ActionScript 3構建的,不適用於ActionScript 2項目。 mx.controls.Alert類是Flex Framework的一部分,因此是ActionScript 3的一部分。您從未在ActionScript 2項目中使用過該類。 – JeffryHouser

+0

我明白他的意思,因爲我有同樣的問題。在純AS3項目中,mx.controls.Alert不存在(但它適用於Flex項目)。我認爲它曾經存在於AS2中。 – ADB

回答

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 {} 
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> 

[更新]

意識到我誤解了這個問題後,我看着在互聯網上爲AS3項目Alert組件,發現如下:

http://developer.yahoo.com/flash/astra-flash/alertmanager/

我會盡我的手創造的Flex框架的警報控制的副本,然後再次更新我的答案。

+0

我沒有使用.mxml文件,我用.fla文件,所以我不能導入mx控件在as3 – Mercy

+0

@LeemaRose你希望在純粹的as3項目中使用Alert控件。好的,給我一個改變我答案的機會。 – Taurayi

+0

ya謝謝你Taurayi – Mercy

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用戶界面循環,直到JavaScript函數會返回,因此請確保在您想要執行的操作時調用它。