跳转到内容

ActionScript 编程/第一部分/第一章/第二页

来自维基教科书,开放的书籍,为开放的世界

XMouse, YMouse

[编辑 | 编辑源代码]

假设你有一个按钮,用户点击它。你想获取鼠标的位置。这个属性将帮助你获取鼠标的坐标。

步骤 1

创建一个按钮(通过自己绘制或从公共库中获取),并将其名称设置为“button1”。

步骤 2

从工具箱中选择文本工具并绘制它。然后选择它,在属性窗口中将其宽度设置为 100,高度设置为 20,字体大小设置为 20,Var 设置为“info”,并将文本类型更改为“动态文本”。文本类型有 3 种

  • 静态文本 - 如果你不希望文本的值发生改变,请选择这种文本类型。例如,如果你只是想在文本中输入“hello”,并且你不希望“hello”在运行时发生改变,那么你就使用“静态文本”。这对于一般的文本来说很好。
  • 动态文本 - 这种文本可以在运行时的任何时间改变。如果你想写入当前进程的信息,这种文本非常有用。
  • 输入文本 - 这是一个文本字段,几乎与“动态文本”相同。这两种类型唯一的区别是“输入文本”文本可以由用户改变,而“动态文本”完全无法改变。

因此,我们在示例中使用“动态文本”类型来查看 xmouse 和 ymouse 的值。“Var”属性是文本的值。例如,如果你有一个“输入文本”,它的“Var”属性设置为“zzz”,并且想要检索它的值,那么你可以从“zzz”中获取它。我的意思是文本框的值存储在“zzz”中。但是,通过使用“Var”,在本例中是“zzz”,你也可以改变文本的值”。例如,如果你写

 zzz = "hello";

那么文本的值将变为“hello”;

步骤 3

右键单击你创建的按钮,从弹出菜单中选择“动作”以打开按钮的动作。确保“高级模式”已打开,并写入以下内容

 on (release) {
    info = "x: " + button1._xmouse + "; y: " + button1._ymouse;
 }

第一行和第三行是“释放”事件的开始和结束(在“可见”属性中讨论)。第二行使用“_xmouse”和“_ymouse”属性将我们的动态文本的值设置为鼠标坐标。因此,当单击按钮时,你将在动态文本中看到鼠标的坐标。但空点是对象的中心。因此,如果你单击按钮的左侧,x 坐标将小于 0,如果你单击对象的右侧,那么 x 坐标将大于 0。

CurrentFrame

[编辑 | 编辑源代码]

此属性告诉你在当前的影片剪辑中,现在正在播放哪一帧。我写的是影片剪辑而不是对象,因为此属性仅适用于影片剪辑。这一次,我们将创建一个更复杂的示例。

步骤 1

在工具箱中选择矩形工具,绘制一个矩形,双击它,然后按 F8 将其转换为符号。当“转换为符号”对话框出现时,将其名称设置为“g_box”,行为设置为“图形”。

步骤 2

按 F11 查看库窗口,然后单击“创建新符号”。当“创建新符号”对话框出现时,将其名称设置为“m_box”,行为设置为“影片剪辑”,然后按“确定”。当你在“m_box”中时,从库中添加“g_box”图形。然后右键单击时间轴窗口中的第 32 帧,选择“插入关键帧”。现在单击 1 到 32 之间的任何帧,在属性窗口中,从“补间”组合框中选择“动作”。然后在“旋转”组合框中选择“CW”(顺时针),在“旋转计数”字段中键入 1。这将使盒子顺时针旋转 1 次。

步骤 3

现在转到“场景 1”,从工具箱中选择文本工具。绘制一个文本,将其宽度设置为 40,高度设置为 20,字体大小设置为 20,Var 设置为“info”,并将文本类型更改为“动态文本”。

步骤 4

现在右键单击我们的盒子,选择“动作”。当“动作”窗口出现时,确保“高级模式”已打开,并为影片剪辑 m_box 键入以下内容

 onClipEvent (enterFrame) {
    _root.info.text = _currentframe;
 }

现在让我们理解一下代码。单词“onClipEvent”是一个事件处理程序,就像“on”一样。单词“enterFrame”是事件。如果我们在之前的按钮示例中使用“on (event) {””,那么对于影片剪辑,我们使用“onClipEvent(event) {”。现在让我们讨论第二行。“_root”是 Flash 中的主要对象。想象一下这样的场景:你坐在汽车里,汽车在车库里,车库在建筑物里,建筑物在城市里。正如你所看到的,所有这些的首领当然就是城市,建筑物是次级首领,等等。这意味着如果你想看到建筑物,你必须先走出汽车,然后走出车库,然后走出建筑物,只有这样你才能看到它。因此,如果我们用编程方式描述你的位置,那么它将是“_root.building.garage.car.you”,其中 _root 是城市。在我们的示例中,我们在“onClipEvent (enterFrame) ”事件中,所以如果我们要访问 var info,那么我们必须通过“_root”访问它,这意味着“_root.info”。现在你问为什么我们要写“_currentframe”而不写任何东西。因为我们已经在影片剪辑中了。例如,如果你坐在汽车里,你需要从汽车里取钥匙。你不会走出汽车,然后再进入汽车去取钥匙,你只会简单地取钥匙,然后走出汽车。所以这就是为什么在我们的示例中,我们使用“_currentframe”而不写任何东西。但是,如果你想通过“_root”访问它,那么你将写“_root.box._currentframe”。

步骤 5

现在测试影片,你将看到结果。

TotalFrames

[编辑 | 编辑源代码]

_totalframes 属性只是告诉你影片剪辑中有多少帧。为了测试它,我们将使用之前的示例。右键单击场景 1 中时间轴窗口中的关键帧,选择“动作”。然后在脚本窗格中写入以下内容

 trace(box._totalframes);

Trace 用于记录编程注释或在测试影片时在输出窗口中显示消息。trace 的使用方式如下“trace(expression);”。例如,如果你写“trace ("hello!!!");””,那么“hello!!!”将显示在输出窗口中。但是,此操作仅在 Macromedia Flash MX 中有效。我的意思是,如果你发布了你的影片,用户将看不到输出窗口。因此,只在你自己测试影片时使用它。现在让我们回到我们的示例。此代码将帧数写入输出窗口,它将是 32。

_url 属性从下载影片剪辑的 SWF 文件中检索 SWF 文件的 URL。与之前的属性一样,添加“trace(box._url)””,你将看到 SWF 文件的路径。

这会返回影片剪辑的目标路径。这几乎是我们之前在“TotalFrames”中讨论的内容。例如,正如我们之前提到的,如果我们在汽车中,我们的目标将是“\building\garage\car”。或者另一个例子:如果你创建一个影片剪辑并将其命名为“m1”,然后创建另一个影片剪辑并将之前的影片剪辑放在其中,并将其命名为“m2”,那么如果在“m1”的动作中写入

 onClipEvent (enterFrame) {
    trace(_target);
 }

那么返回路径将是“\m2\m1”

DropTarget

[编辑 | 编辑源代码]

稍后讨论。

FocusRect

[编辑 | 编辑源代码]

这是一个布尔值(true,false),它指定当影片剪辑获得键盘焦点时,它周围是否有一个黄色的矩形。如果焦点设置,则返回true,否则返回false。

FramesLoaded

[编辑 | 编辑源代码]

属性_framesloaded表示已加载了多少帧影片。这对于监控下载过程非常有用。

SoundBufTime

[编辑 | 编辑源代码]

稍后讨论。

华夏公益教科书