辅助功能*

目录

是否正在考虑使用 Flash 取代 J2ME?

开始一个项目

当您启动 Flash IDE 时, 您会看到一个开始页面, 使用此页面可以从下列三个类别之一选择一个项目: “打开最近使用的项目”、“新建”和“从模板创建”。 对于此项目, 请从“从模板创建”类别单击“全局电话”, 然后选择“Flash Lite 1-1 Symbian 60 系列”模板。 单击“确定”, 您将启动您的第一个 Flash 项目。 选择“文件”>“另存为”并给出一个名称 (例如, stock.fla)。

如果您期望 Eclipse 类型的 IDE, 那么您在第一次看到 Flash IDE 后将感到惊奇。 Flash 采用与 J2ME 不同的编程模型。 电影剪辑的概念存在于 Flash 应用程序的核心。 不存在任何 main()startApp() 方法。而是在顶部会显示一个时间线, 可以将帧插入该时间线中。 将它当作您通过添加图像、控件等等为之创建单独的帧的一个电影。

左边的工具箱显示通常的绘图工具。 作为一名 J2ME 编程人员, 您很可能会问, “代码在哪里?” Flash 使用一种称为 ActionScript 的脚本语言。 使用 Flash Lite 2.0, 您获得整个 ActionScript 功能的一个子集, 但它已超出了用于创建功能强大的移动应用程序的足够功能。

为了确保您使用的是正确的 ActionScript 版本, 请选择“文件”>“发布设置”来设置发布设置。 在“发布设置”对话框中, 单击“Flash”选项卡。 在“版本”弹出菜单中, 选择“ Flash Lite 2.0”。 在“ActionScript 版本”弹出菜单中, 选择“ActionScript 2.0”。

现在您已准备好继续并开始创建应用程序了。

添加按钮和菜单

下一步是创建开始菜单。 此时, 您必须真正停止思考 J2ME 术语并开始思考关于图形元素的事项。 选择“插入”>“新符号”, 单击“按钮”选项, 在“名称”文本框中输入 Stock Tracker, 然后单击“确定”。

当您查看右边的“库”面板时, 您将会看到它包含您新创建的菜单按钮 (请参见图 1)。 但是它在哪里?该标签又在哪里呢? 此处是您的艺术力量起作用的位置: 您必须绘制该按钮。 请注意时间线中顶部的四个选项卡: “Up”、“Over”、“Down”和“Hit”。 您可以为这些状态中的每一个绘制该按钮的外观。 选择“文本”工具并将鼠标指针拖动到画布上以创建按钮。 接着选择“文本”工具为该按钮添加一个名称。 若要绘制处于 Down 状态中的按钮, 首先必须插入一个关键帧。 选择“插入”>“时间线”>“关键帧”, 然后绘制处于被压低状态中的按钮。

您的库中的“Stock Tracker”按钮

图 1。您的库中的“Stock Tracker”按钮

提示: 复制 Up 状态, 将它粘贴到 Down 状态中, 然后仅更改背景颜色。

若要使用您新创建的按钮, 请选择“场景 1”选项卡并添加两个帧。 第 1 帧将成为一个欢迎页面, 而第 2 帧将显示菜单。 单击第 2 帧并将您的菜单按钮拖动到画布上, 然后对剩余的菜单项目重复此步骤。 按 Ctrl + Enter 以在模拟器中测试菜单。 菜单将出现在一个窗口中 (请参见图 2)。

Flash Lite 模拟器中的“Stock Tracker”按钮

图 2。Flash Lite 模拟器中的“Stock Tracker”按钮

创建按钮图示了 J2ME 和 Flash 之间的基础差异。 使用 J2ME, 您预先构造了控件, 比如您以编程方式创建的菜单。 在 Flash 中, 您必须绘制它们, 且您可以按您的想法设置它们的外观。 为了充分利用 Flash 的强大功能, 您应仔细阅读教程, 其中介绍所有各种工具的功能、使用层等等。 我已试验了各种工具来使随附的 Flash 文件中的按钮更加漂亮。

现在, 您已完成了开始菜单, 您需要创建新的帧来显示何时选择某个特定的按钮。 按与以前相同的步骤, 在“场景 1”中创建一个新的关键帧, 然后创建相应的元素, 如菜单或文本框。 一件很酷的事情是, 您能够以图形方式创建整个用户界面而无需编写任何代码。 甚至更酷的是, 如果您需要, 您也可以使用代码来完成创建, 但这不在本文的讨论范围之内。

使用事件句柄

现在您可以刺激您的按钮以跳到某个特定的帧, 这些帧的编号是连续的: 第 1 帧、第 2 帧、第 3 帧等等。 您希望在单击“设置”按钮时跳到第 3 帧, 因此, 请转到第 2 帧, 并选择创建的“设置”按钮。 打开“操作”窗口 (“窗口”>“操作”) 并添加下面的代码:

on (press) {
   // Jump to Frame 3 and stop there
   gotoAndStop(3);
}

注意: “ActionScript”窗口显示与突出显示的对象相关联的 ActionScript。 单击画布使您能够将某个脚本与当前显示的帧相关联, 显示该帧时将执行该脚本。 小心: 始终正确地选择您希望与脚本相关联的对象。

如果您要在模拟器中进行尝试, 您将得到一种奇怪的闪烁效果: 会显示包含该菜单的第一个帧, 且会立即跟着下一个帧。 这是因为 Flash 使用帧就像电影一样: 除非您告诉它在某个特定的点停止, 否则它会一个接一个地播放它们。 一旦您领会了这一概念并知道如何在某个帧上停止及如何跳到另一个帧, 您将开始取得真正的进步。

为了停止闪烁, 只需单击第一个帧并在“操作”窗口中输入 stop();。 代码看起来应像这样:

// this ActionScript sets your content to be full screen
fscommand2("FullScreen", true);
// Stop and wait 
stop();

与 Java 的相似之处

您将很高兴地看到在 ActionScript 中的注释使用与 Java 相同的语法, 并且您可以使用 /* */ 进行多行注释。 如果您希望输出某些调试信息, 您可以使用 trace() 功能:

trace("Setting full screen");

ActionScript 与 Java 有许多相似之处。 使用它, 你将很快感觉很习惯。 通过使用蓝色的“+”图标, 编辑器使您能够从工具栏添加功能。 单击此图标帮助您看到有哪些方法、事件等可用 (请参见图 3)。 编辑器帮助进行自动完成并显示有哪些可用选项。 例如, 键入 on ( 会显示一个可从中选择的事件列表。

使用 ActionScript 工具浏览可用的功能

图 3。使用 ActionScript 工具浏览可用的功能

使用变量

当然, 您希望能够存储输入符号。 您可以给 InputText 字段分配一个变量。 变量的值被分配给输入字段的内容。 此处就是您需要小心的位置, 因为 Flash 不需要像 Java 那样的显式变量声明。 变量可以隐式地进行声明, 如果您碰巧错误键入了一个变量名称, 则这会导致各种各样的奇怪的事情。 请仔细观察发生的情况。

存储到永久存储

看看与第 2 帧相关联的 ActionScript 代码和“添加股票”按钮。 在 J2ME 中, 我们将数据存储在 RecordStore 中。 Flash Lite 等同项被称为 SharedObject, 它是从内存加载的。 您可以添加自己的属性并保存它们。 该数据是在与第 2 帧相关联的脚本中使用一种回调机制从存储读取的, 并存储在与“添加股票”按钮相关联的脚本中的对象中。

在模拟器中这样做有一些困难, 因为模拟器不支持模拟的存储。 但是, 当我在真实的设备上试用它时, 它工作得很好。