package {
//
import flash.display.Bitmap
import flash.display.BitmapData;
import flash.display.GradientType;
import flash.display.SimpleButton;
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.filters.BitmapFilter;
import flash.filters.BlurFilter;
import flash.filters.BitmapFilterQuality;
import flash.filters.DropShadowFilter;
import flash.filters.GlowFilter;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.display.DisplayObject;
//
public class Alert {
//
private static var stage:Stage;
private static var btnWidth:int = 45
private static var btnHeight:int = 21;
//
public static function init(stageReference:Stage):void {
stage = stageReference;
}
//
public static function show(Text:* = "Made by Dark Vyper", callback:Function = null, Colour:int = 0x515EB7, textColour:int = 0x000000):void {
if (stage == null) return;
var myAlert:Sprite = new Sprite();
myAlert.addChild(createBackground(Colour));
myAlert.addChild(createPrompt(Text.toString(), Colour, textColour));
assignListeners(myAlert, callback);
stage.addChild(myAlert)
}
//
private static function assignListeners(myAlert:Sprite, callback:Function):void {
var Background:* = myAlert.getChildAt(1);
var Prompt:* = Background.getChildAt(0);
var OKbutton:* = Prompt.getChildAt(1);
// Cause Alert to call specified function when alert has been closed
if (callback != null) {
function myFunction(myEvent:MouseEvent):void {
OKbutton.removeEventListener(MouseEvent.CLICK, myFunction);
closeAlert(myEvent);
callback();
};
OKbutton.addEventListener(MouseEvent.CLICK, myFunction);
} else {
OKbutton.addEventListener(MouseEvent.CLICK, closeAlert);
}
}
// removes the Alert from the display list
private static function closeAlert(event:MouseEvent):void {
var OKbutton:* = event.target;
OKbutton.removeEventListener(MouseEvent.CLICK, closeAlert);
var BG:* = event.target.parent;
BG.removeEventListener(MouseEvent.CLICK, doStartDrag);
BG.removeEventListener(MouseEvent.CLICK, doStopDrag);
// messy I know...
var myAlert:Sprite = event.target.parent.parent.parent;
myAlert.parent.removeChild(myAlert);
}
// Creates the background for the Alert
private static function createBackground(Colour:int):Sprite {
var BackgroundBD:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight, true, 0xFF000000+Colour);
var stageBackground:BitmapData = new BitmapData(stage.stageWidth, stage.stageHeight);
stageBackground.draw(stage);
var rect:Rectangle = new Rectangle(0, 0, stage.stageWidth, stage.stageHeight);
var point:Point = new Point(0, 0);
var multiplier:uint = 120;
BackgroundBD.merge(stageBackground, rect, point, multiplier, multiplier, multiplier, multiplier);
BackgroundBD.applyFilter(BackgroundBD, rect, point, new BlurFilter(5, 5));
var bitmap:Bitmap = new Bitmap(BackgroundBD);
var Background:Sprite = new Sprite();
Background.addChild(bitmap);
return Background;
}
// Returns an 'OK' button
private static function createOKBtn(Colour:int, textColour:int):SimpleButton {
var colors:Array = new Array();
var alphas:Array = new Array(1, 1, 1);
var ratios:Array = new Array(0, 128, 255);
var gradientMatrix:Matrix = new Matrix();
gradientMatrix.createGradientBox(btnWidth, btnHeight, Math.PI/2, 0, 0);
//
var btnUpState:Sprite = new Sprite();
colors = [0xFFFFFF, Colour, 0xFFFFFF];
btnUpState.graphics.lineStyle(1);
btnUpState.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, gradientMatrix);
btnUpState.graphics.drawRect(0, 0, btnWidth, btnHeight);
btnUpState.addChild(getTextField("OK" , textColour, true));
//
var btnOverState:Sprite = new Sprite();
colors = [0xFFFFFF, brightenColour(Colour, 50), 0xFFFFFF];
btnOverState.graphics.lineStyle(1);
btnOverState.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, gradientMatrix);
btnOverState.graphics.drawRect(0, 0, btnWidth, btnHeight);
btnOverState.addChild(getTextField("OK" , textColour, true))
//
var btnDownState:Sprite = new Sprite();
colors = [Colour, brightenColour(Colour, 50), Colour];
btnDownState.graphics.lineStyle(1);
btnDownState.graphics.beginGradientFill(GradientType.LINEAR, colors, alphas, ratios, gradientMatrix);
btnDownState.graphics.drawRect(0, 0, btnWidth, btnHeight);
btnDownState.addChild(getTextField("OK" , textColour, true))
//
var myButton:SimpleButton = new SimpleButton(btnUpState, btnOverState, btnDownState, btnOverState);
return myButton;
}
// returns a Sprite containing a prompt positioned in the middle of the stage
private static function createPrompt(Text:String, Colour:int, textColour:int):Sprite {
var holder:Sprite = new Sprite()
holder.addEventListener(MouseEvent.MOUSE_DOWN, doStartDrag);
holder.addEventListener(MouseEvent.MOUSE_UP, doStopDrag);
holder.addChild(getPrompt(Text, Colour, textColour));
holder.x = (stage.stageWidth/2)-(holder.width/2);
holder.y = (stage.stageHeight/2)-(holder.height/2);
holder.filters = [getGlowFilter(Colour), getDropShadowFilter(Colour)];
return holder;
}
//
private static function getBlurFilter():BitmapFilter {
var blurX:Number = 100;
var blurY:Number = 100;
return new BlurFilter(blurX, blurY, BitmapFilterQuality.HIGH);
}
//
private static function getDropShadowFilter(Colour:int):DropShadowFilter {
var color:Number = 0x000000;
var angle:Number = 45;
var alpha:Number = 0.6;
var blurX:Number = 8;
var blurY:Number = 8;
var distance:Number = 4;
var strength:Number = 1.3;
var inner:Boolean = false;
var knockout:Boolean = false;
var quality:Number = BitmapFilterQuality.LOW;
return new DropShadowFilter(distance, angle, color, alpha, blurX, blurY, strength, quality, inner, knockout);
}
//
private static function getGlowFilter(Colour:int):GlowFilter {
var color:Number = 0xFFFFFF;
var alpha:Number = 0.8;
var blurX:Number = 15;
var blurY:Number = 15;
var strength:Number = 0.7;
var inner:Boolean = true;
var knockout:Boolean = false;
var quality:Number = BitmapFilterQuality.HIGH;
return new GlowFilter(color, alpha, blurX, blurY, strength, quality, inner, knockout);
}
// returns a sprite containing a prompt complete with a background, the specified text and an OK button
private static function getPrompt(Text:String, Colour:int, textColour:int):Sprite {
var prompt:Sprite = new Sprite();
prompt.addEventListener(MouseEvent.MOUSE_DOWN, doStartDrag);
prompt.addEventListener(MouseEvent.MOUSE_UP, doStopDrag);
prompt.name = "alert";
var textField:TextField = getTextField(Text, textColour);
var myWidth:int = textField.width+10;
var myHeight:int = textField.height+55;
if (myWidth < 150) {
myWidth = 150;
}
if (myHeight < 100) {
myHeight = 100;
}
if (myHeight > stage.stageHeight) {
myHeight = stage.stageHeight - 20;
textField.autoSize = TextFieldAutoSize.NONE;
textField.height = stage.stageHeight-40;
}
// Create a background for the prompt
var ellipseSize:int = 5;
prompt.graphics.lineStyle(1);
prompt.graphics.beginFill(Colour);
prompt.graphics.drawRoundRect(0, 0, myWidth, myHeight, ellipseSize, ellipseSize);
// Add the specified text to the prompt
textField.x = (prompt.width/2)-(textField.width/2);
textField.y = (prompt.height/2)-(textField.height/2)-10;
prompt.addChild(textField);
// Add an OK Button to the prompt
var OKbutton:SimpleButton = createOKBtn(Colour, textColour);
OKbutton.x = (prompt.width/2)-(OKbutton.width/2);
OKbutton.y = prompt.height-35;
prompt.addChild(OKbutton);
//
return prompt;
}
// Returns a textfield with the specified text
private static function getTextField(Text:String, textColour:int, bold:Boolean = false):TextField {
var myTextField:TextField = new TextField();
myTextField.textColor = textColour;
myTextField.name = "textfield";
myTextField.multiline = true;
myTextField.selectable = false;
myTextField.autoSize = TextFieldAutoSize.CENTER;
if (bold) {
Text = "<b>"+Text+"</b>";
}
myTextField.htmlText = '<font face="Verdana">'+Text+'</font>';
myTextField.x = (btnWidth/2)-(myTextField.width/2);
myTextField.y = (btnHeight/2)-(myTextField.height/2);
return myTextField;
}
//
// Helper functions
//-----------------------------------------------------------------
//
// returns a brighter version of the specified colour
private static function brightenColour(colour:int, modifier:int):int {
var hex:Array = hexToRGB(colour);
var red:int = keepInBounds(hex[0]+modifier);
var green:int = keepInBounds(hex[1]+modifier);
var blue:int = keepInBounds(hex[2]+modifier);
return RGBToHex(red, green, blue);
}
private static function doStartDrag(event:MouseEvent):void {
if (event.target.name != "textfield") {
if (event.target.name == "alert") {
event.target.startDrag();
}
}
}
private static function doStopDrag(event:MouseEvent):void {
if (event.target.name != "textfield") {
if (event.target.name == "alert") {
event.target.stopDrag();
}
}
}
public static function hexToRGB (hex:uint):Array {
var Colours:Array = new Array();
Colours.push(hex >> 16);
var temp:uint = hex ^ Colours[0] << 16;
Colours.push(temp >> 8);
Colours.push(temp ^ Colours[1] << 8);
return Colours;
}
private static function keepInBounds(number:int):int {
if (number < 0) number = 0;
if (number > 255) number = 255;
return number;
}
private static function RGBToHex(uR:int, uG:int, uB:int):int {
var uColor:uint;
uColor = (uR & 255) << 16;
uColor += (uG & 255) << 8;
uColor += (uB & 255);
return uColor;
}
// Stops any mouse events from getting below the alert
private static function stopEvents(event:MouseEvent):void {
event.stopImmediatePropagation();
}
}
}
分享到:
相关推荐
在AS3.0中,我们可以使用内置的Tooltip类来创建鼠标提示。这个类允许开发者定义鼠标悬停在特定对象上时显示的文本或组件。然而,标题中提到的"AS3.0鼠标提示信息源文件"提供了一个优化的解决方案,它可能包括了更...
3.【AS功能代码教程14】鱼眼放大镜和【AS功能代码教程11】图片转场效果,展示了AS3.0在视觉效果和图像处理方面的应用,这些功能对于提升用户界面的互动性和视觉冲击力至关重要。 4.【Flash基础理论课15】绚酷鼠标和...
【Flash AS3.0 教程:代码的位置】 在Flash AS3.0中,与早期版本相比,代码的管理方式有了显著变化。ActionScript 3.0 的代码不再支持直接写在帧、按钮或影片剪辑上,而是主要放置在帧和独立的AS文件(ActionScript...
在AS3.0中,我们可以使用`FileReference`类来与用户的本地文件系统进行交互。例如,如果用户需要选择一个视频文件进行播放,可以这样做: ```actionscript var fileRef:FileReference = new FileReference(); ...
纯as3.0 代码编写的一个类,因为项目需要,在网上查了些资料后自己写的一个Alert类。代码注释的很清楚了,可能不是很完善——!仅供参考。
源码分析可以帮助学习者了解如何利用AS3.0的面向对象特性,如类、包、接口等,构建复杂的游戏逻辑。 2. **追踪游戏**:这种类型的游戏通常需要玩家根据屏幕上的提示进行操作,锻炼反应速度和观察力。通过研究源码,...
AS3.0提供了TextFormat类用于设置文本样式,如字体、大小、颜色等。同时,我们还需要确保所用字体支持汉字,避免显示为方框。对于不认识的汉字,可以使用ToolTip类提供鼠标悬停提示。 六、用户交互与反馈 为了提高...
在本项目中,“flash+as...以上就是关于“flash+as3.0一个拖动的拼图游戏”的主要技术点,涵盖了AS3的编程基础、用户交互、动画制作等多个方面。通过学习和理解这些知识,开发者可以构建出类似的游戏或其他互动应用。
在AS3.0中,这类组件通常会处理用户输入事件,然后调用适当的游戏逻辑函数。 3. `_2048.as`:根据命名习惯,这个文件可能是2048游戏的主类或入口点,它初始化游戏环境,创建棋盘,并可能包含游戏循环和主逻辑。 4....
2. **面向对象编程**:AS3.0是完全面向对象的语言,因此源码可能包含类的定义、继承、封装和多态等概念。了解如何创建类,定义公共属性和方法,以及如何通过实例化对象来操作它们。 3. **显示列表管理**:Flash中的...
2. **文件选择对话框(FileReference)**:AS3.0提供了`FileReference`类,用于打开文件选择对话框,让用户选择要上传的图片文件。通过监听`select`事件,我们可以获取用户选择的文件,并使用`load()`方法读取文件...
AsLine v3.0 是一个基于 AutoCAD 开发的剖面图智能生成插件,该插件为完全绿色、完全免费插件,可以在CAD的地形图上,通过选取一条剖面线而自动生成剖面图,操作非常简单。 下载地址:...
1. **XML解析**:AS3.0 提供了内置的XML类,可以方便地解析和操作XML文档。通过`new XML()`实例化XML对象,然后使用`load()`方法加载XML文件。解析完成后,可以使用`children()`、`attributes()`等方法获取节点和...
Loader类是AS3.0中的核心组件,用于加载各种类型的数据,包括图像、SWF文件和XML。 ```actionscript var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.PROGRESS, onProgress); ...
首先,AS3.0在处理音乐播放时,主要使用了`Sound`类和`SoundChannel`类。`Sound`类用于加载和控制音频文件,而`SoundChannel`类则负责音频的实际播放。例如,你可以通过`Sound.load()`方法加载音乐文件,然后通过`...
总结起来,为了在仅有USB 3.0接口的计算机上顺利使用U盘安装Windows 7,你需要利用"Win7-USB3.0-Creator-V3-Win7Admin2019329"这样的工具来创建一个包含USB 3.0驱动的启动U盘,从而确保安装过程的顺利进行,享受到...
这些都可以通过AS3.0的Timer类、Tween类(例如使用GreenSock库)和其他交互设计来实现。 通过以上步骤,一个基本的AS3.0拼图游戏便完成了。这个过程涵盖了AS3.0的基础知识,如图形处理、事件处理、动画和逻辑控制,...
在压缩包内的文件名中,"as3-parser.jar"可能是解析AS3代码的主要实现,它包含编译后的Java类,用于处理AS3语法和语义。而"License.txt"则通常包含软件的许可协议,规定了用户可以如何使用、修改和分发这个软件,这...
2. **类和对象**:AS3.0是面向对象的语言,这意味着你需要定义类来表示游戏中的元素,如卡片或游戏板。每个卡片都是一个对象,拥有自己的属性(如位置、状态等)和方法(如翻转、检查匹配等)。 3. **事件处理**:...
### AS3.0猜数字游戏知识点解析 #### 一、项目概述 本项目是一个基于Adobe Flash平台使用ActionScript 3.0(简称AS3.0)编写的简单猜数字游戏。用户通过输入数字来猜测系统随机生成的一个1到100之间的数字。如果...