论文部分内容阅读
上期我们对Flash几大职业类别进行了详细解读,“钱途”光明,让人向往啊!要想淘到真金,就得有真本事,下面我们就来吃一份游戏套餐,好好补充能量吧!
想一想,Flash ActionScript版本该选谁?
如果你是一个初学者,面对Flash ActionScript的几个版本——AS1、AS2、AS3等可能会比较困惑,无从下手。它们有好坏之分吗?要从哪个开始学呢?
*方便小巧的AS1、AS2
如果你只想做动画,做做简单的网站,可以点击按钮,可以相互加载,学习AS1就足够了。它方便灵活,没有什么条条框框,非常容易学,因为是面向过程的编程,你可以想到哪儿写到哪儿。
AS2只是在AS1的基础上增加了一些语法,可以让你按照比较标准的方式进行面向对象的程序开发。但Flash被编译成SWF时,内部的代码还是AS1。
*功能强大的AS3
如果你想做游戏,还有比较复杂、比较前沿的互动站点,请直接学习AS3,这是趋势,AS3有很多诱人的优势。
优势1:惊人的代码运行速度
这里用一台CPU为酷睿2 E4400的电脑进行测试。在Flash CS4中新建两个Flash文件,一个脚本设置为ActionScript2,另一个设置为ActionScript3。
在时间轴,第一帧上按F9,打开“动作→帧面板”,把以下代码粘贴到里面,然后按Ctrl+Enter测试影片。
var array:Array = []
var t1:Number = getTimer()
for(var i=0; i<1400000; i++){
array[i] = "信息"
}
trace("循环数组耗时: "+ (getTimer()-t1)/1000 + " 秒")
AS2循环数组耗时13.378 秒,AS3循环数组耗时: 0.199 秒。这个结果比较极端,但你在实际使用中会发现,同样的代码,AS3的执行效率远比AS2和AS1要快得多!
优势2:便捷的XML处理功能
比如一个XML:
var myXML:XML = new XML("<人类><人><姓名>人名1姓名><年龄>18年龄><性别>男性别>人><人><姓名>人名2姓名><年龄>18年龄><性别>女性别>人>人类>")
在AS2中,如果你想得到某个节点的值,需要这样写:
trace(myXML.firstChild.childNodes[0].childNodes[0].childNodes[0].nodeValue)
很麻烦,容易犯晕出错。
在AS3中可就方便了:
trace(myXML.人[0].姓名)
AS3对XML的处理非常强大和方便。
优势3:正则表达式
学过程序的人,一定都知道什么是正则表达式,从AS3开始Flash也支持正则表达式了。
正则表达式只需要一句话就可以搞定的事情,如果你用检查字符串的办法,自己分析会累死的。举几个正则表达式的例子,确实简单吧。
[\u4e00-\u9fa5]//匹配中文字符
^-?\d+$//匹配整数
^[A-Za-z]+$//匹配由26个英文字母组成的字符串
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*//匹配Email地址
除了上面说的几点,AS3的好处还有很多很多。随着FlashPlayer版本的更新,会有越来越多的新API出现,而那些新的API都是只提供给AS3使用的。也就是说,如果你想用那些新功能,只能选择AS3啦。
再综合比较一下吧!
有人说开发小项目用AS1最方便,开发时间上大概是 AS1 用AS3面向对象的做法绝对是首选,因为程序的可读性非常高。可能初期比较费时间,但这是绝对值得的。当项目完成半年甚至一年后又需要修改,或者又要做类似的项目,你就会感觉到面向对象的好处了。
尝一尝,
接触简单的Flash游戏
初学者和入门者别着急,让我们轻松尝试,与Flash亲密接触。如果不涉及复杂的算法、专业的数学知识、人工AI等等,你想实现一个简单的Flash游戏,只需知道:
1.什么是MovieClip
2.MovieClip都有什么属性
3.如何在场景中添加或删除MovieClip
4.了解数组和Object是什么、如何使用,以及如何控制文本
1.什么是MovieClip
在Flash中手绘好的素材,是无法用程序控制它们的,你也无法在时间轴上做动画,使它们动起来。如果你想做动画或者游戏,想控制那些被显示的对象(大小、颜色、角度或其他),对象必须是一个元件。选择在场景中画好的素材,然后按F8,就会出现一个对话框,询问你要把素材转化成什么元件。
元件可以是Button(按钮,是特殊的影片剪辑)、Sprite(精灵,没有时间轴)、MovieClip(影片剪辑,是具备时间轴的Sprite),当素材被转化成元件以后,你可以在库(Ctrl+L)中找到它们。这些在库中的元件,你就可以在动画中反复使用啦。
2.MovieClip都有什么属性
MovieClip属性可以参看:http://tinyurl.com/yypbkj2
其中包含“公共属性”以及“隐藏继承的公共属性”。假设你的影片剪辑叫做MC,那么你通过“点语法”来控制它,并使用它的属性。使用MovieClip的“公共方法”以及“继承的公共方法”用法也是一样的。比如:
MC.x = 200//控制MC的x坐标
MC.y = 100 //控制MC的y坐标
MC.gotoAndStop(10) //控制MC停止在第几帧
MC.play() //控制MC开始播放
3.如何在场景中添加或删除MovieClip
在场景中画一个圆,之后用鼠标选择这个圆(你会看到圆上有规则排列的原点),按F8,会弹出一个窗口“转换为元件”。
请按照图的设置(名称Ball,类Ball,基类:flash.display.MovieClip),完成后点击确定。完成后,你就可以在库中看到这个Ball了。完成后把Ball从时间轴上删掉。在时间轴上绘制两个按钮,用来添加和删除(见图1)。在属性面板中,给两个按钮分别取名为bt1和bt2在场景中点空白处(见图2)。在“类”的输入框中输入DocumentClass。保存这个文件到硬盘,命名为myFirstFlash.fla。
打开FlashDevelop,新建一个as文件,保存到myFirstFlash.fla 同一个目录里,命名为 DocumentClass.as。在DocumentClass中输入如下内容:
package {
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class DocumentClass extends MovieClip {
private var ballShowed:Boolean;
private var ball:Ball;
function DocumentClass() {
ballShowed = false;
bt1.addEventListener(MouseEvent.CLICK,_click)
bt2.addEventListener(MouseEvent.CLICK,_click)
}
private function _click(e:Event):void
{
switch(e.target) {
case bt1:
if (!ballShowed) {
ballShowed = true;
ball = new Ball();
ball.x = 200; ball.y = 100;
addChild(ball);
}
break;
case bt2:
if (ballShowed) {
ballShowed = false;
removeChild(ball);
}
break;
default:
break;
}
}
}
}
完成后,在Flash中Ctrl+Enter测试,即可看到运行效果了。你已经成功完成添加和删除MC的任务,还做完成了如何使用和监听按钮的鼠标事件。
4.数组和Object的使用请参阅帮助文件。如何控制文本已经在第7期刊登的“hello the word”实例中向大家介绍了。
果果点酱
世上最远的距离,是Flash爱好者拿着iPhone,却不能开发你
对于Flash,地球人是有爱的;对于iPhone,地球人也是有爱的,只可惜,Adobe和苹果之间目前无爱。
盼望着,盼望着,Flash CS5要发布了,本刊原计划为大家送上神奇的重力游戏DIY,只要你有Flash CS5+iPhone。
可惜,只好无奈地把这个计划取消了,因为新的iPhone开发者授权协议中写道:“应用程序仅能使用苹果规定的API,不能使用或调用任何其它API。应用程序需要以Objective-C、C、C++或JavaScript编写,只有以C、C++和Objective-C编写的代码可以直接连接到官方APIs(不允许应用程序通过中间解释程序或兼容层、工具调用官方APIs)。”
也就是说,这个声明几乎完全断绝了Adobe在苹果iPhone等产品上推广Flash的念头,之前虽然苹果不支持Flash,但是Adobe在MAX 2009大会上宣布了Packager for iPhone,Flash开发人员还可以使用它来创建本地iPhone、iPod touch和iPad应用程序,该软件包将包含在即将到来的Flash Pro CS5中。
据国外媒体报道,早在苹果发布iPad平板电脑之前,Adobe公司与苹果公司之间就拉开了口水战,近日iPhone OS 4.0的揭晓更是使得两家的口水战升级。乔布斯觉得Flash太低级,希望大家都改用HTML5。忽然让人想起微软当年限制Java在Windows上发展的小插曲。
好大一个饼,如今成泡影,据说Adobe四处呼喊求援去了,失望的Flash爱好者们只好一声叹息,还有转机吗?这个世界变化快,祈祷奇迹的出现吧。
想一想,Flash ActionScript版本该选谁?
如果你是一个初学者,面对Flash ActionScript的几个版本——AS1、AS2、AS3等可能会比较困惑,无从下手。它们有好坏之分吗?要从哪个开始学呢?
*方便小巧的AS1、AS2
如果你只想做动画,做做简单的网站,可以点击按钮,可以相互加载,学习AS1就足够了。它方便灵活,没有什么条条框框,非常容易学,因为是面向过程的编程,你可以想到哪儿写到哪儿。
AS2只是在AS1的基础上增加了一些语法,可以让你按照比较标准的方式进行面向对象的程序开发。但Flash被编译成SWF时,内部的代码还是AS1。
*功能强大的AS3
如果你想做游戏,还有比较复杂、比较前沿的互动站点,请直接学习AS3,这是趋势,AS3有很多诱人的优势。
优势1:惊人的代码运行速度
这里用一台CPU为酷睿2 E4400的电脑进行测试。在Flash CS4中新建两个Flash文件,一个脚本设置为ActionScript2,另一个设置为ActionScript3。
在时间轴,第一帧上按F9,打开“动作→帧面板”,把以下代码粘贴到里面,然后按Ctrl+Enter测试影片。
var array:Array = []
var t1:Number = getTimer()
for(var i=0; i<1400000; i++){
array[i] = "信息"
}
trace("循环数组耗时: "+ (getTimer()-t1)/1000 + " 秒")
AS2循环数组耗时13.378 秒,AS3循环数组耗时: 0.199 秒。这个结果比较极端,但你在实际使用中会发现,同样的代码,AS3的执行效率远比AS2和AS1要快得多!
优势2:便捷的XML处理功能
比如一个XML:
var myXML:XML = new XML("<人类><人><姓名>人名1姓名><年龄>18年龄><性别>男性别>人><人><姓名>人名2姓名><年龄>18年龄><性别>女性别>人>人类>")
在AS2中,如果你想得到某个节点的值,需要这样写:
trace(myXML.firstChild.childNodes[0].childNodes[0].childNodes[0].nodeValue)
很麻烦,容易犯晕出错。
在AS3中可就方便了:
trace(myXML.人[0].姓名)
AS3对XML的处理非常强大和方便。
优势3:正则表达式
学过程序的人,一定都知道什么是正则表达式,从AS3开始Flash也支持正则表达式了。
正则表达式只需要一句话就可以搞定的事情,如果你用检查字符串的办法,自己分析会累死的。举几个正则表达式的例子,确实简单吧。
[\u4e00-\u9fa5]//匹配中文字符
^-?\d+$//匹配整数
^[A-Za-z]+$//匹配由26个英文字母组成的字符串
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*//匹配Email地址
除了上面说的几点,AS3的好处还有很多很多。随着FlashPlayer版本的更新,会有越来越多的新API出现,而那些新的API都是只提供给AS3使用的。也就是说,如果你想用那些新功能,只能选择AS3啦。
再综合比较一下吧!
有人说开发小项目用AS1最方便,开发时间上大概是 AS1
尝一尝,
接触简单的Flash游戏
初学者和入门者别着急,让我们轻松尝试,与Flash亲密接触。如果不涉及复杂的算法、专业的数学知识、人工AI等等,你想实现一个简单的Flash游戏,只需知道:
1.什么是MovieClip
2.MovieClip都有什么属性
3.如何在场景中添加或删除MovieClip
4.了解数组和Object是什么、如何使用,以及如何控制文本
1.什么是MovieClip
在Flash中手绘好的素材,是无法用程序控制它们的,你也无法在时间轴上做动画,使它们动起来。如果你想做动画或者游戏,想控制那些被显示的对象(大小、颜色、角度或其他),对象必须是一个元件。选择在场景中画好的素材,然后按F8,就会出现一个对话框,询问你要把素材转化成什么元件。
元件可以是Button(按钮,是特殊的影片剪辑)、Sprite(精灵,没有时间轴)、MovieClip(影片剪辑,是具备时间轴的Sprite),当素材被转化成元件以后,你可以在库(Ctrl+L)中找到它们。这些在库中的元件,你就可以在动画中反复使用啦。
2.MovieClip都有什么属性
MovieClip属性可以参看:http://tinyurl.com/yypbkj2
其中包含“公共属性”以及“隐藏继承的公共属性”。假设你的影片剪辑叫做MC,那么你通过“点语法”来控制它,并使用它的属性。使用MovieClip的“公共方法”以及“继承的公共方法”用法也是一样的。比如:
MC.x = 200//控制MC的x坐标
MC.y = 100 //控制MC的y坐标
MC.gotoAndStop(10) //控制MC停止在第几帧
MC.play() //控制MC开始播放
3.如何在场景中添加或删除MovieClip
在场景中画一个圆,之后用鼠标选择这个圆(你会看到圆上有规则排列的原点),按F8,会弹出一个窗口“转换为元件”。
请按照图的设置(名称Ball,类Ball,基类:flash.display.MovieClip),完成后点击确定。完成后,你就可以在库中看到这个Ball了。完成后把Ball从时间轴上删掉。在时间轴上绘制两个按钮,用来添加和删除(见图1)。在属性面板中,给两个按钮分别取名为bt1和bt2在场景中点空白处(见图2)。在“类”的输入框中输入DocumentClass。保存这个文件到硬盘,命名为myFirstFlash.fla。
打开FlashDevelop,新建一个as文件,保存到myFirstFlash.fla 同一个目录里,命名为 DocumentClass.as。在DocumentClass中输入如下内容:
package {
import flash.display.Sprite;
import flash.display.SimpleButton;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class DocumentClass extends MovieClip {
private var ballShowed:Boolean;
private var ball:Ball;
function DocumentClass() {
ballShowed = false;
bt1.addEventListener(MouseEvent.CLICK,_click)
bt2.addEventListener(MouseEvent.CLICK,_click)
}
private function _click(e:Event):void
{
switch(e.target) {
case bt1:
if (!ballShowed) {
ballShowed = true;
ball = new Ball();
ball.x = 200; ball.y = 100;
addChild(ball);
}
break;
case bt2:
if (ballShowed) {
ballShowed = false;
removeChild(ball);
}
break;
default:
break;
}
}
}
}
完成后,在Flash中Ctrl+Enter测试,即可看到运行效果了。你已经成功完成添加和删除MC的任务,还做完成了如何使用和监听按钮的鼠标事件。
4.数组和Object的使用请参阅帮助文件。如何控制文本已经在第7期刊登的“hello the word”实例中向大家介绍了。
果果点酱
世上最远的距离,是Flash爱好者拿着iPhone,却不能开发你
对于Flash,地球人是有爱的;对于iPhone,地球人也是有爱的,只可惜,Adobe和苹果之间目前无爱。
盼望着,盼望着,Flash CS5要发布了,本刊原计划为大家送上神奇的重力游戏DIY,只要你有Flash CS5+iPhone。
可惜,只好无奈地把这个计划取消了,因为新的iPhone开发者授权协议中写道:“应用程序仅能使用苹果规定的API,不能使用或调用任何其它API。应用程序需要以Objective-C、C、C++或JavaScript编写,只有以C、C++和Objective-C编写的代码可以直接连接到官方APIs(不允许应用程序通过中间解释程序或兼容层、工具调用官方APIs)。”
也就是说,这个声明几乎完全断绝了Adobe在苹果iPhone等产品上推广Flash的念头,之前虽然苹果不支持Flash,但是Adobe在MAX 2009大会上宣布了Packager for iPhone,Flash开发人员还可以使用它来创建本地iPhone、iPod touch和iPad应用程序,该软件包将包含在即将到来的Flash Pro CS5中。
据国外媒体报道,早在苹果发布iPad平板电脑之前,Adobe公司与苹果公司之间就拉开了口水战,近日iPhone OS 4.0的揭晓更是使得两家的口水战升级。乔布斯觉得Flash太低级,希望大家都改用HTML5。忽然让人想起微软当年限制Java在Windows上发展的小插曲。
好大一个饼,如今成泡影,据说Adobe四处呼喊求援去了,失望的Flash爱好者们只好一声叹息,还有转机吗?这个世界变化快,祈祷奇迹的出现吧。