AS3 小例示范 — Hello World 作者:10pm 本例用“Hello World”的应用程序,说明如何构建外部ActionScript程序包,以及如何在Flash中调用该程序包的方法。本例引用自Adobe发布的《Flash ActionScript 3.0 编程》中文手册,并加以简化,以求简单明了地说明AS程序包和Flash祯定义间的互动。这本该是一个非常简单的命题,只可惜在网上找到的很多ActionScript教程并未开宗明了的教示如何引用AS程序包,以致象我这样的菜鸟花费了好多时间而不能得门而入。其实,类似于其他程式语言,初学者第一个想知道的是如何把“Hello World"这样一个字符串搬到屏幕(或者说舞台场景)中来。 本例用 Adobe Flash CS4 构建,该软件支持 ActionScript 3.0 代码语言。 在你的电脑中开一个文件夹,取名为AS3, 专门存放ActionScript的程式包和与之相连的Flash文件,以及以后要用到的其他类别文件。 (1) 在该文件夹下,建立一个ActionScript外部包,文件命名为 Greeter.as: package { public class Greeter { public function sayHello():String { var greeting:String; greeting = "Hello World!"; return greeting; } } } (2) 打开Flash, 建立一个新的Flash文件(ActionScript3.0),选择“文件”>“保存”,选择文件夹AS3,将 Flash 文档命名为 HelloWorld.fla. 在场景中命名一图层为text, 在 Flash 的“工具”栏中,选择“文本工具(T)”,然后在舞台中拖动以定义一个新的文本字段,字段宽高无需严格定义,以大一点为宜。 去到“窗口”>“属性”,打开“属性”窗口,在“属性”面板中,在仍然选中舞台中的文本字段时,将文本类型设置为“动态文本”,并键入 mainText 作为该文本字段的实例名称。 在场景中,选中图层“text",单击时间轴的第 1 帧,右击打开“动作”面板,在“动作”面板中键入以下代码脚本: var myGreeter:Greeter = new Greeter(); mainText.text = myGreeter.sayHello(); 选择“控制”>“测试影片”运行 HelloWorld 应用程序。 如果没有编译错误,你将看到一个显示 Hello World 的场景。 保存该文件。 此例虽然简单,却是Flash如何调用外部程式包的一个完整示范。可能你对以上的这段代码还不甚了了,我也和你一样,但我想你大体上能猜得出每句的约略含意,这就够了,我们不就是在不清不楚不明不白中摸着石头过河嘛!:) (3) 如果你觉得以上的例子太过简单,那好,我们再来增加一点互动的内容。 用户在屏幕上输入名字,程序来核实是否是库存的黑名单中的人,如果是,向他问好,他可以和我们一起做一点坏事。如果不是,则关上大门,不能让他进来。 先把Greeter.as拷到Greeter2.as,改动程式包: Greeter2.as: package { public class Greeter2 { /** * Defines the names that should receive a proper greeting. */ public static var validNames:Array = ["Jack", "Frank", "Dean", "Eric"]; /** * Builds a greeting string using the given name. */ public function sayHello(userName:String = ""):String { var greeting:String; if (userName == "") { greeting = "Hello. Please type your user name, and then press the Enter key."; } else if (validName(userName)) { greeting = "Hello, " + userName + "."; } else { greeting = "Sorry " + userName + ", you are not the bad man."; } return greeting; } /** * Checks whether a name is in the validNames list. */ public static function validName(inputName:String = ""):Boolean { if (validNames.indexOf(inputName) > -1) { return true; } else { return false; } } } } 打开 HelloWorld.fla 文件,另存为 HelloWorld2.fla 文件。 修改text图层第 1 帧中的脚本: var myGreeter:Greeter2 = new Greeter2(); mainText.text = myGreeter.sayHello(""); 在“工具”栏中,选择“文本工具(T)”,然后在舞台上创建两个新的文本字段,这两个字段直接并排放置在现有的 mainText 文本字段之下。 在第一个新文本字段中,键入文本 User Name: 作为标签。 选择另一个新文本字段,并在“属性”检查器中选择“输入文本”作为该文本字段的类型。选择“单行”作为“行类型”。键入 textIn 作为实例名。 单击text图层时间轴的第 1 帧,在“动作”面板中,在现有脚本的末尾添加以下行: mainText.border = true; textIn.border = true; textIn.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); function keyPressed(event:KeyboardEvent):void { if (event.keyCode == Keyboard.ENTER) { mainText.text = myGreeter.sayHello(textIn.text); } } 保存该文件。 选择“控制”>“测试影片”,运行应用程序。 运行该应用程序时,将提示你输入用户名。如果用户名有效(Jack、Frank、Dean 或 Erick),应用程序则会显示“Hello”确认消息。 试一试吧!:)) |