![]() |
|
||||||||||
|
|||||
|
Banned
[+6 20.04.11]
[+1 22.08.11] [+ 31.08.11] Регистрация: Aug 2010
Сообщений: 196
|
видел прием - появляется информационное окно - а весь остальной экран флэша расплывается и становится недоступным для нажатий и реакций. естественно - чтобы прочитала и закрыли окно.
может кто знает- сам способ - которым это можно сделать? я имею ввиду не расплытие(хотя и это интересно) а недоступность холста? неужели просто создают новый слой во весь экран? |
|
|||||
|
[+4 06.05.14]
|
Да делают именно так. вот пример с копирайтом
package com.in4core.system { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.display.Stage; import flash.errors.IllegalOperationError; import flash.events.KeyboardEvent; import flash.filters.BlurFilter; import flash.geom.Matrix; import flash.text.TextField; import flash.text.TextFormat; import flash.ui.Keyboard; /** * ... * @author in4core */ public class _write { private static var _instance:int = 0; private static var _word:String = null; private static var _inited:Boolean = false; private static var _obj:Stage = null; static private var _captured:Boolean = false; static private var _position:uint = 0; static private var _bdata:BitmapData = null; static private var _bitmap:Bitmap = null; static private var _container:Sprite = null; static private var _mat:Matrix = new Matrix(); static private var _tf:TextField = new TextField(); static private var _copy:String = 'Project created by <b><font color="#FFFFFF">In4Core</font></b> Development LLC.' + '\n\nAll Right Reserved.\n\n'+ 'Copyright (c) 2011'; public static function writeWord ( word:String ) : void { _word = word.toLowerCase(); } public static function readWord () : String { if (_word) return _word; return null; } public static function writeCopy ( obj:Stage ) : void { if (obj && _word.length > 3 ) _obj = obj , _generateCopy(); else throw new IllegalOperationError ('error' , 1); } static private function _generateCopy() : void { _inited = true; _obj.addEventListener ( KeyboardEvent.KEY_DOWN , _addKey, false , 0 , true); } static private function _addKey(e:KeyboardEvent) : void { if (e.keyCode == Keyboard.ENTER && _captured ) { _showHint() ; return; } else if (e.charCode == _word.charCodeAt(_position)) { _position ++; if (_position == _word.length) { _captured = true; } } else _position = 0 , _captured = false; } static private function _showHint() : void { trace('show'); _obj.mouseChildren = false; _obj.removeEventListener ( KeyboardEvent.KEY_DOWN , _addKey , false ); _obj.addEventListener ( KeyboardEvent.KEY_DOWN , _hide , false , 0 , true ); _bdata = new BitmapData ( _obj.stageWidth , _obj.stageHeight , false , 0 ); _bdata.draw ( _obj ); _bitmap = new Bitmap ( _bdata ) ; _bitmap.filters = [ new BlurFilter ( 20, 20 , 3) ]; _bitmap.x -= 20; _bitmap.y -= 20; _bitmap.width += 40; _bitmap.height += 40; _obj.addChildAt( _bitmap , _obj.numChildren ); drawRect() ; _obj.addChild ( _container ); } static private function _hide (e:KeyboardEvent) : void { if (e.keyCode == Keyboard.ESCAPE ) { trace('hide'); _clear(); _generateCopy(); } } public static function readCopy () : Boolean { if (_inited ) return true; return false; } private static function _clear() : void { _inited = false; _captured = false; _position = 0; _bdata = null; _obj.mouseChildren = true; if (_bitmap.parent) _obj.removeChild(_bitmap) , _bitmap = null; if (_container.parent) _container.removeChild(_tf) , _obj.removeChild(_container) , _container = null; _obj.removeEventListener ( KeyboardEvent.KEY_DOWN , _addKey , false ); _obj.removeEventListener ( KeyboardEvent.KEY_DOWN , _hide , false ); } private static function drawRect() : void { _mat.createGradientBox ( 250 , 140 , Math.PI / 2); _container = new Sprite(); _container.graphics.beginGradientFill ( 'linear' , [0x454140,0],[1,1],[0,255], _mat ) _container.graphics.drawRoundRect ( 0 , 0 , 250 , 140 , 20); _container.graphics.endFill(); _container.graphics.beginFill ( 0xFFFFFF , 0.03 ); _container.graphics.moveTo (0, 10); _container.graphics.curveTo(0, 0, 10, 0); _container.graphics.lineTo ( 240 , 0); _container.graphics.curveTo( 250, 0 , 250 , 10); _container.graphics.lineTo ( 250 , 130); _container.graphics.curveTo( 250 , 140 , 240 , 140); _container.graphics.curveTo( 125, 40, 0 , 10) _tf.textColor = 0x999999; _tf.htmlText = _copy; _tf.selectable = false; _tf.antiAliasType = 'advanced'; _tf.autoSize = 'left'; _tf.setTextFormat(new TextFormat('_sans', 11, null, null, null, null, null, null, 'center')); _tf.x = _container.width / 2 - _tf.width / 2; _tf.y = _container.height / 2 - _tf.height / 2; _container.addChild(_tf); _container.x = _obj.stageWidth / 2 - _container.width / 2; _container.y = _obj.stageHeight / 2 - _container.height / 2; } } }
__________________
Марк Tween |
|
|||||
|
Два способа:
1) Весь контент, который следует заблокировать собирают в один контейнер. Когда нужно отключают ему mouseEnabled и mouseChildren. 2) Появляющееся информационное окно имеет задник, который ловит все мышиные события. |
|
|||||
|
Banned
[+6 20.04.11]
[+1 22.08.11] [+ 31.08.11] Регистрация: Aug 2010
Сообщений: 196
|
а не подскажете ли, как узнать размеры стейжда и снять с него скриншот?
|
|
|||||
|
Banned
[+6 20.04.11]
[+1 22.08.11] [+ 31.08.11] Регистрация: Aug 2010
Сообщений: 196
|
не нравится мне этот код. попробую сам поискать!
|
|
|||||
|
[+1 24.05.11]
[+1 09.08.11] Регистрация: Mar 2011
Сообщений: 101
|
Вот старое хорошее решение - если уж ничего не нравится.
http://silin.su/#AS3/utils/alert |
|
|||||
|
Banned
[+6 20.04.11]
[+1 22.08.11] [+ 31.08.11] Регистрация: Aug 2010
Сообщений: 196
|
уже начал делать это. вроде все ок. только вот хочу спросить - каков синтаксис - чтобы уже готовую BitmapData показать на экране в MovieClip или в виде картинки?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|