Actionscript 3 使用actionscript 3在帧之间传递变量

Actionscript 3 使用actionscript 3在帧之间传递变量,actionscript-3,global-variables,flash-cs3,Actionscript 3,Global Variables,Flash Cs3,我是actionscript 3.0新手,尝试将在第1帧中创建和设置的变量传递到第4帧中添加到舞台的动态文本框时遇到困难 在第1帧上,根据用户输入的信息设置变量: var输入_dia=“”; input_dia=pdia_input.text 并应显示在第4帧的动态文本框中: 直径警报。文本=输入直径 我收到以下错误: 1120:访问未定义的属性输入直径。您必须想象-不同的场景非常类似于单独的电影,flash很难在它们之间共享 正确的方法是开始使用AS3的OOP(面向对象编程)。 您需要创建一个

我是actionscript 3.0新手,尝试将在第1帧中创建和设置的变量传递到第4帧中添加到舞台的动态文本框时遇到困难

在第1帧上,根据用户输入的信息设置变量: var输入_dia=“”; input_dia=pdia_input.text

并应显示在第4帧的动态文本框中: 直径警报。文本=输入直径

我收到以下错误:
1120:访问未定义的属性输入直径。

您必须想象-不同的场景非常类似于单独的电影,flash很难在它们之间共享

正确的方法是开始使用AS3的OOP(面向对象编程)。 您需要创建一个称为文档类的东西。这实际上是一段永远隐藏在幕后的代码(没有双关语)。你可以在这堂课上储存资料,以后随时阅读

这比听起来容易,一旦设置好,它将允许您开始将代码从时间表中移出


首先创建一个名为“DocumentClass.as”的文件,它实际上可以被称为任何东西,但称之为“这是一个非常好的实践”

将此文件保存在与您正在使用的FLA相同的位置-同一文件夹中


在CS3中-在屏幕底部的属性面板中-当您选择阶段时,将有一个小框,允许您在其中键入文档类的名称。键入刚创建的文件名“DocumentClass”*,不带扩展名“.as”-如果不确定需要键入的位置,请单击链接

请注意大写-这是一个很好的做法


在Flash中打开此文件并编写以下代码。正是我写的

DocumentClass.as

你可以在我为你写的所有废话中看到我有一个名为myName的变量-你可以创建你想要的-myAge。。。texttobeinall场景。。。今天女朋友的体重。。。什么都可以


进一步解释 类是在需要时在内存中创建的代码块。DocumentClass就是这样,但它贯穿于应用程序的整个生命周期

一个软件包——就像3所说的“把这些东西放在盒子里”——它可以变得更高级,但这就是jist

类DocumentClass扩展了MovieClip-你告诉flash“我的类叫做DocumentClass”-这扩展了一个叫做MovieClip的东西

MovieClip是一个类,与您的类完全相同,但它是为您设计的,并且生活在flash中。这包含许多使动画工作的代码。你的Flash场景本身就是这部电影的可视版本

您必须扩展这个类,因为您非常想[以一种虚假的方式]复制粘贴所有完成的代码并在DocumentClass中使用它。您现在正在扩展MovieClip,通过这样做,您的代码堆积在已经存在的内容之上

公共函数DocumentClass()-是,这是一个函数。但它被称为“构造”。它是类内部的一种特殊类型的函数。首先,它有相同的名字。这使得Flash可以很容易地找到它。它的特殊任务是在flash中创建并看到这个类时立即开始自动运行代码。全自动看


对您来说,重要的部分是我添加的
public var
。这是一个可以存储信息的存储桶

公共部分告诉flash,任何人都可以看到它,如果他们愿意,场景,其他类。。。街上的人-什么都可以

变量(或bucket)名称后的:字符串告诉flash变量中将存储何种类型的信息。这并不重要,但对于好的OOP代码来说,这样做很重要。(谷歌AS3变量转换)

有许多变量类型,字符串,数字,整数,布尔值等等。。。大约7个基本的


我认为这对于StackOverflow来说已经足够了-它会起作用-

请注意,大多数错误都是您的拼写错误。。。Flash不喜欢拼写错误



享受吧

在我看来,框架脚本是贫民区,应该避免

也就是说,你的问题可以用几种方法解决。首先,创建一个“Actions”层,通过将该层拉伸到时间线的长度,所有帧都可以访问该层,但所有actionscript都在第一帧上。第二,将文本字段放置在单独的图层上,可在第一帧中访问,但仅在第4帧中可见(假设您不希望它在第4帧之前出现)

然而,正如甘油所建议的那样,OOP和下降设计模式是一条明确的道路,尤其是如果您是新手并且计划在flash平台上进一步投资的话

一些书籍建议:,和。这些书肯定会为flash平台的正确开发提供一些坚实的基础。如果你读了它们,你不会后悔的。

两个答案都很好(我对它们投了赞成票),但从你的代码来看,你似乎在创建一个简单的表单,也许不想在atm机上投入太多时间。最快的解决方案是仍然在时间轴上编码,但将所有内容都放在第一帧上。您将更改visible属性以隐藏和显示不同的MovieClips,而不是转到不同的帧


因此,您的对话框错误框将始终存在,但在启动时隐藏,当用户输入数据时,我假设有一个提交按钮,则可以显示您的警报MovieClip。因为所有内容都在第一帧中,所以您可以轻松地将值分配给文本字段。

一个简单的解决方案是创建全局变量而不是局部变量

var myVar=“hi”

this.myVar=“hi”


如果你在动作层第1帧中贴花,你可以在其他帧中进一步访问this.myVar

我知道我的答案看起来很吓人-但只要问一下,我会说更多。。。
package {

  //Call this class the SAME NAME as the file - VERY IMPORTANT
  class DocumentClass extends MovieClip
  {

    //This is an example of a variable - a container
    //of information of which is public - and can be 
    //seen by all the scenes in your flash movie.
    public var myName:String = "Jay Jagpal";

    //This is called a construct - this function automatically
    //runs when this class is seen by flash.
    public function DocumentClass()
    {
      //nothing needs to go here for you today...
    }
  }

}