Как создать диалоговое окно оповещения в ActionScript3? - PullRequest
3 голосов
/ 29 октября 2011

Я работаю над проектом с Actionscript 3.0 в Flash Pro (CS5).Я хочу создать окно подтверждения.Если бы я использовал Flex SDK, я мог бы сделать это, используя класс Alert в пакете mx.controls .Тем не менее, похоже, что в стандартной библиотеке Flash подобного элемента управления не существует, и любое количество Google просто приводит меня к ссылкам Flex.

Ответы [ 4 ]

5 голосов
/ 03 ноября 2011

Попробуйте этот класс

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 голосов
/ 29 октября 2011

Вы сказали, что не можете импортировать mx.Controls в AS3, но в проекте 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]

Поняв, что я неправильно понял вопрос, я посмотрел в Интернете компонент Alert для проектов AS3 и обнаружил следующее:

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

Я собираюсь попробовать свои силы в создании реплики элемента управления предупреждений Flex Framework, а затем снова обновлю свой ответ.

2 голосов
/ 30 октября 2011

Если ваш последний SWF-файл будет запущен в браузере и у вас есть доступ к сценарию, вы можете просто использовать одно из всплывающих окон JavaScript :

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, поэтому убедитесь, что вы вызываете его, когда все, что вы хотите делать.

0 голосов
/ 29 октября 2011

Я считаю, что вы можете продолжать использовать тот же класс оповещения

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/controls/Alert.html

...