![]() |
|
||||||||||
|
|||||
|
Banned
[+1 13.12.12]
[+6 15.11.12] [+5 14.12.12] Регистрация: Sep 2012
Сообщений: 91
|
Здавствуйте,ситуация такая:у меня есть кнопка,при нажатии на которую выскакивает окно с информацие и еще одной кнопкой.
Как сделать что бы при появлении инфо окна,оно вылазило на передний план а задний расфокусировывался и стал бездейственным? package { import flash.display.*; import flash.event.*; public class A extends MovieClip { var btn:Btn = new Btn();//кнопка var btnInfo:BtnInfo = new BtnInfo();обект содержащий в себе информацию и кнопку. var fon:Fon = new Fon();//обект который должен быть расфокусирован и обездействован(это кнопка ) public function A() { addChild(fon); fon.addEventListener(MouseEvent.CLICK,func); } } function func(e:MouseEvent) { addChild(btnInfo); } } |
|
|||||
|
Регистрация: Oct 2012
Сообщений: 191
|
Не уверен, что особо помогу вам, но в as3 есть слушатели фокуса. И соответсвенно, когда фокус с "заднего плана" снимаеться и вызываеться что-то вроде отмены реакции на событие...щяс Колина Мука полистаю, освежу память, отпишу если найду.
|
|
|||||
|
Цитата:
Одно но, спрайт должен позиционироваться по глобальным координатам, т.е. его точка регистрации должна находиться в том же месте, где 0:0 у стейдж. Я обычно для подобных систем с придупреждающими окнами создаю специальный менеджер, со статическими методами, который изначально надо один раз инициализировать Вот самый упрощенный вариант такого менеджера package { import flash.display.Stage; /** * ... * @author Casey Ryan */ public class WindowsManager { private static var stage: Stage; public static function initialize(stg:Stage):void { stage = stg; } public static function showWarning():void { if (!stage) throw "класс не инициализирован"; var warningWindow:WarningWindow = new WarningWindow(); // создаем окно и добавляем на стейдж; об остальном позаботится само окно warningWindow.x = (stage.stageWidth - warningWindow.width) / 2; warningWindow.y = (stage.stageHeight - warningWindow.height) / 2; stage.addChild(warningWindow); } } } import flash.display.Sprite; import flash.events.Event; internal class WarningWindow extends Sprite { private var _veil:Sprite = new Sprite(); // спрайт, который закрывает собой всю сцену public function WarningWindow() { graphics.beginFill(0xFFFF00); graphics.drawRoundRect(0, 0, 300, 170, 10, 10); graphics.endFill(); addEventListener(Event.ADDED_TO_STAGE, onAdded); } private function onAdded(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, onAdded); _veil.graphics.beginFill(0x000000, .1); _veil.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); _veil.graphics.endFill(); parent.addChildAt(_veil, parent.getChildIndex(this)); // добавляем непосредственно под это окно; используется parent, чтобы вуаль всегда добавлялась именно в тот же контейнер, что и само окно, без передачи дополнительных ссылок на этот контейнер } } п.с. Обычно я еще в эти окна передаю колбэки, например onClose, onCancel, onConfirm чтобы не подписывать окно на события, и не привязывать к нему лишние ссылки. При удалении окна, ссылки на колбэки просто зануляются |
|
|||||
|
Banned
[+1 13.12.12]
[+6 15.11.12] [+5 14.12.12] Регистрация: Sep 2012
Сообщений: 91
|
спасибо,вы не могли бы поподробнее расписать строки в программе?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 08:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|