flashCS6
打开flashCS6,新建一个AS3.0的flash文档。
【分析】我们需要在舞台上布置一个文本,用于告知观众,本程序能实现的目的。那么,直接设置为静态文本即可。【操作】使用文本工具,设置为传统文本-静态文本,在舞台上写上如图所示的文本,可以视需要自行书写,字号、大小都可以随意修改。
【分析】应该有一个文本框,让用户能输入数字。好用于后续的数学运算。则这个文本框当然要设置为 传统文本-输入文本,同时,为了能参与编程,必须给其在属性面板内设置一个实例名(相当于声明一个变量)【操作】新建一个图层,用文本工具,在属性面板内设置为 传统文本-输入文本,然后在舞台上单击一下,然后,随意输入两个数字,我输入的是25【目的是:方便对数字进行字号、字色的设置。】看下图1,用选择工具单击舞台上的这个文本对象,在属性面板内按图示设置各个项目。这里我将实例名设置为myInput又因为,输入文本只能出现自然数,不会有小数点,也不会有负值,更不会有其它的任何字符,所以直接选择 数字形式的进行嵌入即可。设置完毕后,用选择工具双击舞台上的文本,发现可以编辑【用文本工具单击舞台上的文本也可以】,选中数字25,Delete删除之。补充一点:截图时遗漏掉一点,就是发布为swf文件之后,观众看不到输入文本的地方,所以,需要在属性面板内勾选 显示边框【见图2】
【分析】需要有一个文本框,用于显示计算的结果,当然需要设置为动态文本,因为要参与编程,故此必须设置一个实例名,本例我设为myOutput还需要一个按钮,用于生成计算结果,因为要参与编程,故此必须设置一个实例名,本例我设为myBtn【操作】文本与步骤3一样,仅需修改为 动态文本即可【当然,实例名要设置为别的】,因为使用的字体与步骤3相同,且文字只可能是自然数,故无需额外嵌入字体(因为调用的都是同一个字体的字库)。至于按钮的,从公用库内任意选择一个看着顺眼的拿出来用即可。操作完毕后,保存一下,如下图所示
【分析】尽量将代码放入一个单独的图层内,从而与舞台上的对象完全隔离开。方便后期的修改【操作】新建一个图层,将图层的名字重命名为Actions ,然后按F9键打开动作面板,准备写代码。之所以重命名为Actions的目的是,接下来使用代码片段面板时,自动生成的代码都被放入Actions图层内。如果我们按照默认的“图层 2”,使用代码片段功能后就会余外生成一个Actions图层,从而让代码分散在不同的图层内,进而影响后期的编辑修改【尽量的让代码都在同一个图层内,而不是分散到多个图层】
【分析】舞台上的文本对象,访问时,必须在实例名的后面紧跟.text ,这个称之为 text属性 ,而text属性的类型是String字符串,编程时参与数学运算的数字却是 uint数字类型。那么,我们需要额外的定义两个数字变量,用于存储两个数字【一个数字是由观众进行输入的输入文本、另一个数字是显示运算结果的动态文本】【操作】var inputNum:uint//输入文本var outputNum:uint//显示运算结果的动态文本
【分析】观众单击按钮之后,输入文本的数值就是观众输入之后的值。因此,inputNum不能赋初始值,而是应该将其赋值的代码放入按钮单击内。观众单击按钮之后,同时还会显示运算的结果。因此,运算过程的核心代码以及运算的结果的呈现,都要写入按钮单击内。【操作】打开代码片段面板,按照11课讲解的步骤,给按钮添加按钮单击命令,如下图,自动生成的代码会自动添加到我们Actions图层内。仍然是将多余的注释都删掉,从而让按钮的单击代码只有5行【如图2所示】
【分析】将步骤3内trace('已单击鼠标');这一行代码删掉,替换成分析后的核心代码,从而显示运算的结果【操作】选中trace('已单击鼠标');整行代码后按Delete键即可删掉,然后书写下面的代码:inputNum=uint(myInput.text)for(var i:uint=1;i<=inputNum;i++){outputNum+=i}myOutput.text=''+outputNum《代码分析》请参考下图的行号第6行:将用户输入的文本的内容赋值给inputNum变量。因为inputNum是uint类型的,直接赋值会报错,因此必须用强制转换函数uint()来将String类型的myInput.text强制转换为uint类型。强制转换的格式就是:uint(被转换的数据)第7~9行:就是我们在第9课内编写的求和的代码,仅将原代码的sum替换成了本例定义的outputNum而已第10行:将运算后的outputNum的值 赋值给舞台上的动态文本myOutput 注意这里也用到了强制转换函数。
大功告成。测试影片看看效果吧【本例的fla源文件会在帖子内分享,以方便大家对照着学习】
代码中两次用到了强制转换函数,这里简单的介绍一下。强制转换函数是为了赋值时,克服数据类型不一致,所引入的技术。被赋值号连接的左右两侧的对象,其数据类型必须一样,否则会出现“编译器错误”【就是我常说的 报错】,从而导致整个flash作品瘫痪。
比较常用的情况就是 数字和字符串之间的相互转换【还有其它类型的,我会在后续教程中合适的地方进行阐述】需要特别注意:数字6 和字符串'6',虽然在输出面板内都一样【看下图】,但是两者的数据类型是不一样的
如果按照下图所示的,硬是要将字符串类型的'6'赋值给数字类型的sz测试影片时,会报错
因此,如果被赋值号连接的左右两侧的对象,本身的数据类型就不同,就必须由代码编写者人为的进行强制转换。强制转换是一种函数操作,函数有着非常明显的特征,那就是,在函数名后面一定会紧跟一对小括号。那么,假设现在有一个String类型的变量a,如果要将其强制转换类型:<1>转为uint类型: uint(a)<2>转为int类型: int(a)<3>转为Number类型: Number(a)反之,如果a的类型是数字类型(无论是哪一种数字类型操作方法都一模一样),要将其强制转换为String类型的,代码就是:String(a)