欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>Flash关于游戏制作研究之在场景中移动(...

Flash关于游戏制作研究之在场景中移动(...

2023-05-24 08:08:28 收藏本文 下载本文

“每天努力冲冲冲”通过精心收集,向本站投稿了9篇Flash关于游戏制作研究之在场景中移动(...,下面是小编为大家准备的Flash关于游戏制作研究之在场景中移动(...,欢迎阅读借鉴。

Flash关于游戏制作研究之在场景中移动(...

篇1:Flash关于游戏制作研究之在场景中移动(...

场景是游戏中的一个重要元素,特别对于RPG游戏来说场景的数量就更多了,所以现在我为一些想做游戏的入门新手来讲解一下,游戏中的角色是如何在场景中实现移动的,

Flash关于游戏制作研究之在场景中移动(...

。今天我们要讲的是以游戏角色为中心的场景移动方式。

以游戏角色为中心的场景移动方式就是:除了到达场景的尽头之外,游戏角色始终在场景的中心的移动方式。现在我们也可分开来考虑问题了,我们可以分为:在未达到场景尽头和已到达场景尽头两种情况。在未到达场景尽头时,游戏角色是在场景的中心位置的,已到达场景尽头时是游戏的角色逐渐向尽头靠拢的动作。还要进行说明的一点是,在很多种情况中都是由视觉产生的错觉,很多人以为是角色的移动造成场景的移动,所以把注意力集中在角色中,其实在编写在场景移动的注意力应该集中在场景上,当按下方向键时场景就开始移动,使我们误认为是角色在移动了。所以我们要分析出最本质的东西才能让我们事半功倍,好接下来我们就开始说说如何制作吧...

首先我们找来一幅图片并将它导入到Flash中。然后新建一个MC,把图片拖进去并让它和原点对齐,此步的目的是为了我们日后编程的方便而做的。而这一个MC就是我们的场景了。接着我们把这个MC拖到主场景并取名为map。接着我们再新建一个MC,这个用来表示游戏中的角色,我们随便画一个圆点给它。我们把这个MC也拖进场景取名为CurPoint。接下来我们开始编写脚本,点击主场景第一帧,写下如下代码:

//以角色为中心的场景移动

//角色移动的速度

var speed:Number = 3;

this.onEnterFrame = function {

if (Key.isDown(Key.UP)) {

if (map._y>=0) {

//达到上边界

map._y = 0;

curPoint._y -= speed;

} else {

//未到达上边界,地图下移

if (curPoint._y>=Stage.height/2) {

curPoint._y -= speed;

} else {

map._y += speed;

}

}

}

if (Key.isDown(Key.DOWN)) {

if (map._y<=-(map._height-Stage.height)) {

//达到下边界

map._y = -(map._height-Stage.height);

curPoint._y += speed;

} else {

//未到达下边界,地图上移

if (curPoint._y<=Stage.height/2) {

curPoint._y += speed;

} else {

map._y -= speed;

}

}

}

if (Key.isDown(Key.LEFT)) {

if (map._x>=0) {

map._x = 0;

curPoint._x -= speed;

} else {

if (curPoint._x>=Stage.width/2) {

curPoint._x -= speed;

} else {

map._x += speed;

}

}

}

if (Key.isDown(Key.RIGHT)) {

if (map._x<=-(map._width-Stage.width)) {

map._x = -(map._width-Stage.width);

curPoint._x += speed;

} else {

if (curPoint._x<=Stage.width/2) {

curPoint._x += speed;

} else {

map._x -= speed;

}

}

}

};

篇2:如何制作flash游戏论文

如何制作flash游戏论文

1 系统制作软件简介

Flash是一种交互式动画设计工具,用它可以将音乐、声效、动画以及富有新意与创意的界面融合在一起,以制作出高品质的动画游戏效果。Flash使用矢量图形和流式播放技术,与位图图形不同的是,矢量图形可以任意缩放尺寸并且不影响图形的质量,生成的影片文件所占体积小;流式播放技术使得动画游戏可以边播放边下载,从而缓解了玩家焦急等待的情绪。Flash游戏的算法实现,主要依赖于脚本即Flash自身的ActionScript语言,它是一种面向对象的程序语言,它可以控制Flash中的对象,创建各种元素,扩展Flash的交互能力和应用能力,将ActionScript使用好,将是游戏制作成功的关键。使用Flash制作的游戏拥有各种分类,最常见的类型主要有3类,即:动作类(ACT),解谜类(AVG)与角色扮演类(RPG)。

2 需求分析

我们知道,很多人长时间地待在一个地方一刻不停地工作,很难得到适当的休息,即使有空余时间休息,休息的时间也比较短暂,如果有不需要花太多时间、能速战速决的游戏,那么我们就可以在短时间内获得放松,因此有必要开发一个小型的Flash动画游戏。按类型分类,五子棋游戏应该归类于解谜类游戏(AVG)之中的休闲小类,它是一种两个人对弈的纯策略型棋类游戏,属于益智型游戏,起源于中国古代的传统的黑白棋种之一。最初是在日本发展起来的,在欧美比较流行。它简单易懂,操作方便,适合工作学习之余想要放松自己的.人群,同时也适合于对儿童进行逻辑思维能力的培养锻炼。

3 游戏总体设计

3.1 游戏结构设计

经过上面的需求分析,此五子棋游戏系统应包含系统初始化模块、下棋模块和结束模块3大功能模块,其中下棋模块又包含初始化棋盘模块、玩家下棋模块和电脑下棋模块3个子模块。功能分别描述如下:

(1)系统初始化模块:显示游戏规则,并进入游戏。

(2)下棋模块:为电脑和玩家绘制且显示棋子,并为电脑分析最佳位置。

(3)初始化棋盘模块:设置电脑在棋盘中间固定位置下一个白棋子,并提示玩家接下一个棋。

(4)玩家下棋模块:为玩家绘制并显示一个黑棋子。

(5)结束模块:判断并显示输赢,然后重新开始或退出游戏。

3.2 游戏运行流程

游戏运行之后会显示游戏规则,在此处点击进入游戏按钮即可开始游戏。首先会初始化棋盘,电脑会下第一个点(白子),此时等待玩家落子(黑子),玩家落子后系统会判断此时谁达到了赢的条件,若都没有达到,轮到电脑思考、下棋,再判断,再交替,直到玩家或电脑达到赢的条件,此时显示结果并可选择是否重新开始或退出游戏。

3.3 游戏算法分析

(1)初始化棋盘模块:在这个模块中,必须先定义好棋盘的盘面坐标数组pmzb[15][15],玩家棋子数组wjqz[15][15][4]和电脑棋子数组dnqz[15][15][4],并将其初始化为0,定义棋子可能落子的8个方向,也就是4个对称方向的数组,

并初始化棋盘,让电脑先在中间下一个棋子,然后把下棋权交给玩家。

(2)玩家下棋模块:该模块主要是接收玩家下的棋子的各种信息然后为玩家绘制棋子并作出相应的判断和记录,故在这里应该设置一个棋盘按钮来实现。

(3)电脑下棋模块:该模块采用冒泡法,冒泡法是一种排序的算法。在该模块中,为了使电脑能对棋盘上的棋子进行比较,需要定义一个列表函数用来记录棋盘上所有棋子的信息,如坐标、棋盘上还有没有空位置、各个方向的棋子情况等等,并作出相应判断,记录最佳位置,把最佳位置记录赋给主函数并绘制出电脑的棋子显示在棋盘上,最后把下棋权交给玩家,直到对弈结束。

4 游戏详细设计

4.1 元件设计与制作

根据五子棋游戏的制作需要,首先在Flash中尽量把必须的一些影片剪辑、按钮、图片等3种类型的元件准备好,为布置游戏场景做好充分的准备。经分析,图形元件有“棋盘”;按钮元件有“按钮1”、“进入游戏”、“重新开始”;影片剪辑元件有“规则界面”、“白棋”、“黑棋”、“棋盘按钮”、“下棋”、“电脑思考”和“游戏结束”等。

4.2 场景布置

4.3 编码

4.4 测试与发布

在进行游戏发布之前进行游戏测试,按Ctrl+Enter调用Flash播放器对整个游戏进行调试。测试成功后打开属性面板,找到“发布设置”,在“发布设置”对话框中勾选Flash(.swf)、HTML(.html)、Windows放映文件(.exe)3个选项,点击“发布”则可分别生成一个影片文件、一个网页文件和一个应用程序文件。

5 结束语

实践证明,由于Flash具备着那些面向一般用户的软件所具有的便利性,使游戏开发过程变得比较简易,即使是面对新手也具有较强的可操作性。此外在小游戏范畴,使用Flash所制作出的游戏即使和专业的程序设计软件相比,也毫不逊色。

【参考文献】

[2]付岩.基于Flash的游戏设计与开发[J].计算机光盘软件与应用,,3:173-174.

[3]肖刚.回合制Flash游戏开发的通用框架[J].闽江学院学报:自然科学版,,27(2):53-56。

篇3:Flash游戏制作:打砖块

打砖块游戏大家都很熟悉:游戏者用一个挡板对小球进行反弹,上方排列了一些方块砖,游戏的目的就是利用鼠标对挡板进行左右移动控制,以便将小球挡回去,避免小球落到挡板的下方,挡回去的小球将与上面的方砖发生碰撞,被碰撞的方砖会自动显示,玩家每打掉一块方砖,会得到一定的分数,

Flash游戏制作:打砖块

在本实例中每局中玩家的生命值为5,如果将当前界面中的方砖全部打完,则进入下一关。游戏开始允许玩家选择游戏难度:初级、中级和高级,不同的难度中方砖的数量和小球运动的速度不同,玩家可以根据自己的水平选择合适的游戏难度。

游戏制作思路:

本游戏主要涉及到以下几种主要控制:

1.鼠标拖动:游戏中需要使用鼠标拖动档板左右移动来挡小球,此功能也是很多游戏中常用的,用startdrag函数很容易就解决了。

2.小球的反弹控制:游戏中小球会不断和墙壁、挡板或者方砖发生碰撞,所以需要使用Action来控制小球的反弹。

3.方砖和小球的碰撞测试:游戏中需要检测小球是否碰到了方砖,此功能可以使用hitTest碰撞测试函数来检测。

4.游戏的记分和生命值:在游戏中需要动态的显示当前玩家的游戏得分和玩家剩余的生命值,这里使用动态文本框(Dynamic text)实现显示分数的功能。

通过以上几点的分析,可以大概理顺游戏的制作思路,下面我们就来进行本游戏的具体制作。

游戏的制作步骤:

1.小球的制作:此类游戏中小球是必不可少的对象,所以我们可以随意绘制一个小球,再填充上合适的颜色,不过因为我们需要在后面使用Action对小球进行控制,所以这里我们将小球做成movie clip,命名为ball,如图1所示:

图1

2.小球反弹效果制作:因为游戏中小球要在多个场合进行反弹,所以需要制作一个小球进行反弹的效果,这里我们新建一个movie clip,命名为ball_jmp,进入组件的编辑状态后,在原有图层layer1的上方新建一个图层layer2,我们要的效果是小球由下自上弹起来,所以图层layer1制作小球阴影由小到大的的shpae形状变化效果,图层layer2制作小球由下自上的motion运动效果,如图2所示:

图2

3.背景变幻效果:如果在游戏的过程中能不断的变换游戏背景,可以使游戏气氛显的很紧张,玩起来也很刺激,所以就制作一个背景颜色快速变化的Mc,新建一个movie clip,命名为background,在第一帧使用矩形工具绘制一个填充色为蓝色的矩形,如图3所示:

图3

然后在图层layer1的第2帧插入一个关键帧,在第8帧也插入一个关键帧,并将第8浈中的矩形填充色改变为浅蓝色,然后建立第2帧到第8帧的shape形状过度效果,最后将时间线延长到第10帧,如图4所示,

图4

在图层layer1的第1帧添加AS:

play = 0;

stop; //定义变量play,然后暂停播放

在图层layer1的第2帧添加AS:

play = Number(play)+1;

setProperty(“/ball”, _visible, false);

tellTarget (“/”)

//变量play的值为当前值增一,然后设置小球为不可见,主场景停止播放

在图层layer1的第8帧添加AS:

if (Number(play)<3) else {

if (Number(endgame) == Number(false)) {

tellTarget (“/”)

}

if (Number(/:endgame) == Number(false)) {

setProperty(“/ball”, _visible, true);

}

gotoAndStop(1);

}

//根据变量play和endgame的不同值,跳转到不同的帧,并设置小球为可见

4. 游戏难度选择按钮的制作:本游戏可以在游戏开始前选择游戏难度,游戏中一共分为三种难度,分别是初级,中级和高级,不同的难度方砖的数量和小球运动的速度将不同,玩家可以根据自己的水平选择合适的游戏难度。这里以其中一个按钮为例进行说明,其它两个按钮制作方法类似。

新建一个button按钮组件,命名为advanced,进入组件编辑状态后,在按钮的UP帧处输入advanced几个字,代表高级难度,然后在OVER帧插入一个关键帧,将前面做好的组件ball_jmp拖到文字的左方,然后分别在DOWN帧和Hit帧插入关键帧,如图5所示:

图6

按照同样的方法制作其它两个按钮,分别为beginner和intermediate,代表了初级和中级。

5.档板的制作:接下来制作游戏中另一个很重要的角色――档板,档板在游戏中被鼠标控制,用来挡回小球,因为游戏中需要使用Action对挡板进行控制,所以档板也需要制作成movie clip.新建一个Movie clip,命名为paddle,进入组件的编辑状态后,使用矩形工具绘制一个填充色为红色渐变的矩形,如图6所示;

图6

6.砖块的制作:游戏的目的就是利用小球击中更多的方砖,所以方砖是必不可少的,为了使游戏的视觉效果更加突出,本游戏一共制作了四种不同颜色的方砖,分别为黄色,红色,蓝色和绿色的砖块,这里我们只对其中的一种蓝色转块的制作进行讲解,其它三中的制作方法类似。

新建一个movie clip,命名为brickblue,进入组件的辨别状态后,先用矩形工具绘制一个填充色为蓝色渐变的矩形,如图7所示:

图7

然后在图层layer1的第2帧插入关键帧,将矩形的填充色改变为红色,并且将矩形分解为不同的几部分,以便制作砖块爆炸开的效果,如图8所示:

图8

在图层layer1的第9帧插入关键帧,在此帧将矩形的几部分拖拉成扩散状,并将每一碎片进行适当的缩小,然后在第2帧到第9帧之间建立shape形状过渡动画,图9为打开洋葱皮功能的效果:

图9

为了使爆炸效果更加逼真,我们在进行一下修饰,新建一个图层layer2,再第2帧插入一个关键帧,然后使用椭圆工具绘制一个具有红色渐变填充色的圆形,如图10所示;

图10

然后在第2帧到第10帧之间做一个圆形放大且透明度增加的shape形状过渡,如图11所示:

图11

这样,砖块的爆炸效果就很好的体现出来了。

最后还需要添加一些控制用的Action,在图层layer1的第1帧添加如下AS:

vis = 1;

stop();

在图层layer1的第2帧添加如下AS:

todest = /:destroy;

在图层layer1的第10帧添加如下AS:

removeMovieClip(“/brick” add todest);

stop();

到此为止,游戏中需要用到的所有组件就准备好了,下面我们来进行主场景的布置。

二、布置主场景

1.回到主场景中,将原来的图层layer1更名为background,此层放置游戏的背景。使用矩形工具在舞台上绘制一个和舞台同样大小的填充色为深蓝色的矩形,作为游戏的整体背景,然后将组件background拖到舞台的靠右的位置,作为游戏的主体背景,如图12所示:

图12

2.新建一个图层命名为bricks,此层用来放置四种颜色的砖块,将四种不同颜色的砖块分别自上而下拖放到舞台的左边,并给四中颜色的砖块分别设置实例名为brick, brickred, brickblue和brickgreen,如图13所示:

图13

3.再分别新建两个图层,分别命名为ball和paddle,将小球和档板分别拖放到主背景的靠下的位置,并分别设置实例名为ball和paddle,如图14所示:

图14

4.新建一个图层命名为info,此层用来放置记分和生命值用的文本框,分别用文本工具绘制三个文本框,设置其属性为Dynamic text动态文本框,然后给文本框添加说明性文字,从上到下分别为分数,生命值和等级,最后分别给此三个文本框设置变量名为score,balls和level_I,如图15所示:

图15

5. 新建一个图层命名为button,此图层放置游戏开始前的难度选择按钮,将前面制作的三个难度按钮分别拖到主背景的中间位置,由上自下分别为beginner, intermediate和Addvanced。

给beginner按钮添加AS:

on (release) {

speed = 8;

balls = 5;

play();

}

给intermediate按钮添加AS:

on (release) {

balls = 4;

speed = 10;

play();

}

给Addvanced按钮添加AS:

on (release) {

speed = 12;

balls = 3;

play();

}

最后主场景如图16所示:

图16

6.最后一步就需要在主场景中添加游戏控制代码了,新建一个图层命名为action,在此图层第1 帧添加as:

setProperty(“/paddle”, _visible, true);

setProperty(“/ball”, _visible, true);

score = 0;

stop();

//刚开始设置小球和挡板为可见,并且设置初始得分为0,然后影片停止在第一帧,//等待玩家选择游戏难度。

在此图层第2 帧添加as:

startDrag(“/paddle”, false, 240, 420, 560, 420);

//对挡板进行拖动

ballx = 300;

bally = 400;

speedx = 8;

speedy = -8;

ballwidth = 16;

paddlewidth = 80;

brickwidth = 40;

Level_index = 10;

bricknumber = 0;

Level_i = 1;

modified = true;

endgame = false;

border = 250;

//定义并初始化一系列变量,将在后面的代码中用到这些变量

在此图层第3帧添加as:

if (endgame)

//变量endgame标识游戏是否结束,如果游戏结束,则跳转到第5帧

if (Number(bricknumber)<=0) {

Level_i = Level_index-9;

call(Level_index);

//设置游戏等级,也就是等级文本框中的内容,将调用自定义函数level_index.

setProperty(“/brick”, _visible, false);

setProperty(“/brickblue”, _visible, false);

setProperty(“/brickgreen”, _visible, false);

setProperty(“/brickred”, _visible, false);

//设置工作区中的方砖不可见

ballx = 300;

bally = 400;

speedx = Number(speed)+Number(xspeed)-5;

speedy = -speed-xspeed;

}

//设置小球位置和运动速度,ballx和bally代表小球坐标,speedx和speedy代//表小球横向和纵向的移动速度。

ballx = Number(ballx)+Number(speedx);

bally = Number(bally)+Number(speedy);

//根据小球移动速度改变小球坐标

if (Number(bally)<=Number(border)) {

b = int(ballwidth/2);

c1 = int((ballx-200)/40);

r1 = int((bally-b-40)/20);

c2 = int((ballx-b-200)/40);

r2 = int((bally-40)/20);

c3 = int((ballx-200)/40);

r3 = int((Number(bally)+Number(b)-40)/20);

c4 = int((Number(ballx)+Number(b)-200)/40);

r4 = int((bally-40)/20);

i = 1;

while (Number(i)<=4) {

r = eval ( “r” add i );

c = eval ( “c” add i );

IsVisible = getProperty (“brick” add r add c,_currentframe);

if (Number(IsVisible) == 1) {

bricknumber = bricknumber-1;

score = Number(score)+100;

destroy = r add c;

tellTarget (“brick” add destroy)

if ((Number(i) == 2) or (Number(i) == 4)) {

speedx = -speedx;

ballx = Number(ballx)+Number(speedx);

i = 5;

} else {

speedy = -speedy;

bally = Number(bally)+Number(speedy);

i = 5;

}

}

i = Number(i)+1;

}

}

//上面的一系列代码用来判断和小球和方砖的碰撞,然后方砖消失

if ((Number(ballx)>=Number(600-ballwidth/2)) or (Number(ballx)<=Number(200+Number(ballwidth/2)))) {

speedx = -speedx;

ballx = Number(ballx)+Number(speedx);

tellTarget (“/sound”)

}

if (Number(bally)<=Number(41+Number(int(ballwidth/2)))) {

tellTarget (“/sound”)

speedy = -speedy;

bally = Number(bally)+Number(speedy);

//判断小球和墙壁的碰撞,然后计算反弹方向和速度

paddlex = getProperty(“paddle”, _x);

if ((Number(bally)>404) and (Number(ballx)>Number((paddlex-paddlewidth/2-8))) and (Number(ballx)

if (Number(ballx)

speedx = speedx-6;

} else if (Number(ballx)>Number(Number(paddlex)+Number(paddlewidth/2)-int(paddlewidth/5))) {

speedx = Number(speedx)+6;

} else if (Number(ballx)

speedx = speedx-3;

} else if (Number(ballx)>Number(Number(paddlex)+Number(paddlewidth/2)-int(paddlewidth/3))) {

speedx = Number(speedx)+3;

}

speedy = -speedy;

bally = Number(bally)+Number(speedy);

tellTarget (“/sound”)

}

//判断小球和挡板的碰撞,然后计算反弹方向和速度

setProperty(“/ball”, _x, ballx);

setProperty(“/ball”, _y, bally);

//设置小球的新位置,从而移动小球

在此图层第4 帧添加as:

if (Number(balls)<1) {

endgame = true;

gotoAndStop(6);

}

//如果生命值balls为0,则游戏结束

gotoAndPlay(“loopback”);

在此图层第5 帧添加as:

setProperty(“/paddle”, _visible, false);

//设置档板为不可见

tellTarget (“background”)

在此图层第6 帧添加as:

stopDrag();

//停止拖动挡板

c = 0;

r = 0;

//c和r为两个循环变量

while (Number(r)<18) {

while (Number(c)<10) {

removeMovieClip(“brick” add r add c);

c = Number(c)+1;

}

r = Number(r)+1;

c = 0;

}

//初始化变量,对游戏进行数值统计

在此图层第7 帧添加as:

stop();

在此图层第10 帧添加as:

xspeed = 0;

border = 240;

bricknumber = 50;

Level_index = Number(Level_index)+1;

//设置游戏的等级

c = 0;

r = 0;

//c和r为两个循环变量

count = 1;

index = 0;

while (Number(r)<5) {

while (Number(c)

duplicateMovieClip(“/brickred”, “brick” add r add c, Number(count)+1);

setProperty(“brick” add r add c, _x, 220+Number(40*c));

setProperty(“brick” add r add c, _y, 50+Number(20*r));

c = Number(c)+1;

count = Number(count)+1;

}

//复制对象brickred

r = Number(r)+2;

index = Number(index)+2;

c = index;

}

c = 1;

r = 1;

//c和r为两个循环变量

index = 0;

while (Number(r)<5) {

while (Number(c)

duplicateMovieClip(“/brickblue”, “brick” add r add c, Number(count)+1);

setProperty(“brick” add r add c, _x, 220+Number(40*c));

setProperty(“brick” add r add c, _y, 50+Number(20*r));

c = Number(c)+1;

count = Number(count)+1;

}

//复制对象brickblue

r = Number(r)+2;

index = Number(index)+2;

c = Number(index)+1;

}

c = 0;

r = 7;

//c和r为两个循环变量

while (Number(r)<9) {

while (Number(c)<10) {

duplicateMovieClip(“/brickgreen”, “brick” add r add c, Number(count)+1);

//复制对象brickgreen,一共复制16个

setProperty(“brick” add r add c, _x, 220+Number(40*c));

setProperty(“brick” add r add c, _y, 50+Number(20*r));

c = Number(c)+1;

count = Number(count)+1;

}

//设置复制出的砖块的坐标

c = 0;

r = Number(r)+1;

}

setProperty(“/brick”, _visible, false);

在此图层第11 帧添加as,下面的as和第10帧相类似,不过游戏的等级更高

xspeed = 1;

border = 150;

bricknumber = 50;

Level_index = Number(Level_index)+1;

c = 0;

r = 0;

//c和r为两个循环变量

count = 1;

while (Number(r)<5) {

while (Number(c)<10) {

if (((Number(r)<=Number(c)) and (Number(c)<5)) or ((Number(c)>=5) and (Number(c)<=Number(9-r)))) {

duplicateMovieClip(“/brick”, “brick” add r add c, Number(count)+1);

} else {

duplicateMovieClip(“/brickgreen”, “brick” add r add c, Number(count)+1);

}

setProperty(“brick” add r add c, _x, 220+Number(40*c));

setProperty(“brick” add r add c, _y, 50+Number(20*r));

count = Number(count)+1;

c = Number(c)+1;

}

//复制对象brick

r = Number(r)+1;

c = 0;

}

在此图层第12 帧添加as, 下面的as和第11帧相类似,不过游戏的等级更高

xspeed = 2;

border = 330;

bricknumber = 60;

c = 0;

r = 0;

//c和r为两个循环变量

count = 1;

while (Number(r)<14) {

while (Number(c)<10) {

if ((Number(r) == 5) or (Number(r) == 8)) {

duplicateMovieClip(“/brickred”, “brick” add r add c, Number(count)+1);

} else if ((Number(r) == 13) or (Number(r) == 0)) {

duplicateMovieClip(“/brickblue”, “brick” add r add c, Number(count)+1);

} else if ((Number(r) == 7) or (Number(r) == 6)) {

duplicateMovieClip(“/brick”, “brick” add r add c, Number(count)+1);

}

setProperty(“brick” add r add c, _x, 220+Number(40*c));

setProperty(“brick” add r add c, _y, 50+Number(20*r));

c = Number(c)+1;

count = Number(count)+1;

}

r = Number(r)+1;

c = 0;

}

setProperty(“/brick”, _visible, false);

在此图层第13 帧添加as,下面的as和第12帧相类似,不过游戏的等级更高

xspeed = 3;

border = 250;

bricknumber = 72;

c = 0;

r = 0;

//c和r为两个循环变量

count = 1;

while (Number(r)<10) {

while (Number(c)<10) {

if (((Number(r)>1) and (Number(r)<8) and (Number(c)>3) and (Number(c)<6)) or ((Number(c)>1) and (Number(c)<8) and (Number(r)>3) and (Number(r)<6))) {

duplicateMovieClip(“/brickgreen”, “brick” add r add c, Number(count)+1);

} else if (((Number(r) == Number(Number(5-9)+Number(c))) and (Number(r)>0) and (Number(r)<5)and (Number(c)>4) and (Number(c)<9)) or ((Number(r) == Number(5-c)) and (Number(r)>0) and (Number(r)<5) and (Number(c)>0) and (Number(c)<5)) or ((Number(9-r) == Number(5-c)) and (Number(r)>4) and (Number(r)<9) and (Number(c)>0) and (Number(c)<5)) or ((Number(9-r) == Number(Number(5-9)+Number(c))) and (Number(r)>4) and (Number(r)<9) and (Number(c)>4) and (Number(c)<9))) {

duplicateMovieClip(“/brickred”, “brick” add r add c, Number(count)+1);

} else if ((Number(r)>8) or (Number(r) == 0) or (Number(c) == 0) or (Number(c) == 9)) {

duplicateMovieClip(“/brickblue”, “brick” add r add c, Number(count)+1);

}

setProperty(“brick” add r add c, _x, 220+Number(40*c));

setProperty(“brick” add r add c, _y, 50+Number(20*r));

c = Number(c)+1;

count = Number(count)+1;

}

r = Number(r)+1;

c = 0;

}

setProperty(“/brick”, _visible, false);

在此图层第14 帧添加as,下面的as和第13帧相类似,不过游戏的等级更高

border = 370;

bricknumber = 116;

c = 0;

r = 0;

//c和r为两个循环变量

count = 1;

while (Number(r)<16) {

while (Number(c)<10) {

if (((Number(r)>1) and (Number(r)<9) and (Number(c) == 3)) or ((Number(r)>1) and (Number(r)<9)and (Number(c) == 6))) {

duplicateMovieClip(“/brickblue”, “brick” add r add c, Number(count)+1);

} else if (((Number(r)>1) and (Number(r)<9) and (Number(c) == 1)) or ((Number(r)>1) and (Number(r)<9) and (Number(c) == 8))) {

duplicateMovieClip(“/brickred”, “brick” add r add c, Number(count)+1);

} else if (((Number(r) == 0) and (Number(c)>2) and (Number(c)<7)) or ((Number(r) == 7) and (Number(c)>2) and (Number(c)<7)) or ((Number(r) == 8) and (Number(c)>2) and (Number(c)<7))) {

duplicateMovieClip(“/brickblue”, “brick” add r add c, Number(count)+1);

} else if ((Number(r) == 1)) {

duplicateMovieClip(“/brickgreen”, “brick” add r add c, Number(count)+1);

} else if (Number(r)>8) {

duplicateMovieClip(“/brick”, “brick” add r add c, Number(count)+1);

}

setProperty(“brick” add r add c, _x, 220+Number(40*c));

setProperty(“brick” add r add c, _y, 50+Number(20*r));

c = Number(c)+1;

count = Number(count)+1;

}

r = Number(r)+1;

c = 0;

v}

setProperty(“/brick”, _visible, false);

在此图层第15 帧添加as:

endgame = true;

Level_index = Number(Level_index)+1;

最后时间线如图17所示:

图17

最后您就可以进行游戏的测试了,

本游戏的制作难度属于中等难度,掌握好此游戏的制作方法,您还可以尝试更复杂一些的游戏制作。

篇4:flash游戏杀狗大赛制作

在internet无比火爆的今天,网络技术日新月异,而macromedia的flash无疑是其中的佼佼者,flash技术以无与伦比的速度被广大用户所接受,并越来越展现出其强大的生命力,

它提供给设计者和开发者轻松创建新一代网络应用的编辑新经验。从可口可乐爱华电子,越来越多的用户选择flash制作高压缩性的,富含声音与动画的交互式网站。创意,互动,趣味,实用,一切结合得是如此完美....

而要想学好flash,其形变动画,运动动画,蒙板动画等并不难,最大难点无疑是在macromedia flash5.0中嵌入的actionscript脚本功能,actionscript脚本语言是特有的一种非常强大的网络动画编程语言,其语法结构虽与javascript脚本语言相类似,但又有很多不同于javascript的独到之处。50多个action行为,数百个子符串,运算符与函数,而很多的书辑,教程过于隆统,抽象,让人很难一时间完全弄懂。

本文的目的就是通过几个简单的flash游戏,让已对掌握flash基本操作的使用者对actionscrip脚本有较直接的了解,掌握常用的actionscript脚本语言,并通过多动手,多动脑,在实战中提高自己的flash水平。

实例说明:

本游戏有9个地洞,小狗随机的在这9个洞中出现,你的任务就是在小狗把头缩回洞内之前打中它,越快击中得分数越高,小狗每出现一次为一轮,20轮后游戏结束,并给出得分。

原理分析:

用遮照完成小狗在黑洞里一进一出的效果,用startdrag来替换鼠标,利用ramdon取随机数使小狗随机出现,而把时间轴上每一帧给予不同的分值使得越快打到分越高,最后用input text来显示得分。我希望您能你了解这个游戏的原理,而不是简单的照做,举一反三是很重要的,只有真正了解了一个作品的原理,算法之后,您才能做出自己更好的作品。为了您能看得更清楚并使之适合于一些flash的初学者,

我将以层为单位逐层的来讲解并尽可能详细的介绍操作,由于这种讲解的顺序和我们在实际中完成一件作品的顺序是相同的,因此有必要提醒大家注意:

background层

打开您的flash,本例使用的是macromedia flash5.0版本,单击file,在下拉菜单中,单击new新建一个文件。(这些操作都有快捷键,为使您更好理解,将写成file---new,下同)modify---movie,在出现的影片信息中将影片宽(width)改为400,高(height)改为300,并设定背景色为浅黄色。insert---symbol...新建一个图型(graphic)原件命名为hole,在hole中画一个黑色的椭圆,返回scene 1,window---library显示出原件列表,把hole拖放到scene 1的第一层,复制成9个,window---panels---align调出对齐面板把9个hole对齐排好,再用文字工具在

右下方输入“得分”,最后将这一层改名为 background。

dog层

insert---symbol...新建graphic命名为dogpic,手绘一个可爱的狗头,当然您要是喜欢小猪我也不介意。inster---symbol...新键一个movieclip,命名为dogmovie,从library拖放dogpic到dogmovie,局中。insert---keyframe在第5,10,25帧建立关键帧,单击第10帧,调整此帧上dogpic的位置向上50(可通过window---panel---info来调整,insert---keyframe在第20帧建立关键帧。右键单击第5到第10帧间任一帧,creat motiontween建立运动动画,同样在第20到25帧建立运动动画。inster---symbol...新建一个button命名为grid,insert---keyframe在hit帧上创键关键帧,画一个矩型。返回pigmovie,insert---layer新建一层layer2,insert---keyframe在第5帧建立关键帧,从library中拖放grid到lyer2,删除lyer2上21-25帧。insert---layer新建一层lyer3,insert---blank keyframe在第1,5,20帧建立空白关键帧,左键双击第一帧弹出action面板,

basic action---stop,单击第5帧,window---panel---frame弹出 frame面板,将lable设置为up,同样将20帧的frame. lable设为down。我们在这里为frame设置lable值是为了方便我们用actionscript进行跳转,在flash中可以设置是按帧位置数或帧标签跳转,通常使用的是标签方式,可以减少发生错误的机率并使你的actionscript更具有可读性。我们回到scene 1,insert---layer新建一层改名为dog,从library中拖放dogmovie到这一层,复制9个,使每一个dogmovie都正好处在background层中每一个黑色椭圆长轴以下。

mask遮照层

遮照的概念是:遮罩层可以遮盖任何同遮罩层相关联的图层(被遮层)里的内容。

在scene 1中insert layer并将此层改名为mask,以background层上的黑色椭圆长轴为基准,画一个矩形,并使此矩型比dogmovie稍大一点,复制九个排列好。右击此层在弹出菜单中选mask,这样,我们就做好了一个遮照。也就是说在dog层上的所有原件除非出现在本层9个矩形范围以内否则便都是不可见的了。由于现在dog层上并没有任何的原件在此范围内,所以虽然我们在dog层上放了9个原件但我们将只能看到

background层上9个黑色hole,但记得吗,我们做的dogmovie是上下移动的movieclip,而当其向上云动时就会显示在屏幕上,而向下运动就会从屏幕上消失。这样就达到了我们让小狗一进一出的目的。但是有个严重的问题,我们的9个dogmovie会同时运动,而不是象我们希望的那样一个一个的运动,别急,下面就该我们的主角actionscript出场了。

随机运动

双击pigmovie中的第一帧,在action面板中的basic action中选取stop()。

单击dog层上的一个dogmovie,window---panels---instance将name设为dog0。依次将其它的dogmovie命名为dog1,dog2.....dog8。在scene1中新建一层action, 在第5帧新建关建帧,双击第5帧,输入actions如下:

tellTarget (“/dog” add random(9)) {

gotoAndPlay (“up”);

}

random(9)是从0-9中任取一数,add 是一个字符传连接符,用来连接“/dog”和random(9)得到的数。telltarget的语法是:

telltarget(target);

target:指定时间轴线的目标路径字符串

statement:目标时间轴线代码

tellTarget (“/dog” add random(9))执行后的结果是调用/dog0,/dog1....../dog8,而gotoAndPlay (“up”)从up帧开始播放,这就达到了

我们dogmovie随机出现的目地,

鼠标替换

为了使游戏更真实,我们应当屏闭掉默认的鼠标图形,并用我们做好的movieclip来代替它。先insert---symbol...新建一个moviclip原件命名为knife,双击第一帧,在action面板中的basic action中选取stop(),在第二帧画一把刀,第三帧在刀边画上一串血花。回到scene1,把knife拖拽到background层,并命名为knife,在action层的第4帧建立关键帧,并输入如下actions:

mouse.hide()

startDrag (“knife”, true);

mouse.hide()把默认的鼠标隐藏起来。startdrag的语法是:

startdrag(target);

startdrag(target,[lock]);

startdrag(target,[,lock[,left,top,right,bottom]]);

target:待拖动的movie clip的目标路径

lock: 布尔值,用来指定是把可拖动的movie clip锁定在鼠标中央位置(真),还是锁定在用户最初在movie clip上单击的位置(假)。

这个参数是可任选的。

left,right,top,bottom:指定动画的父代movie clip的限制矩形区域。这个参数是可任选的。

这样我们就可以用knife来取代默认的鼠标。

计分与轮次:

我们预定游戏10个回合后结束,并且每个回合都要计算本轮得分与总分。10回合后游戏结束。首先来看看怎样实现计算游戏回合:

双击action层上第四帧输入:ROUND=“0”,单击第5帧在frame面板上定义lable为:again,在第30帧建立关键帧,并将其frame. lable定义为back,双击action层上第26帧输入actions如下:

ROUND = Number(ROUND)+1;

if (Number(ROUND)<11) {

gotoAndPlay (“again”);

} else {

gotoAndPlay (“BACK”);

}

这样我们用一个条件选择完成了循环。当ROUND小于11时将不断循环,而ROUND等于11时将跳到结尾。

游戏的计分方式为越快击中小狗分数越高。

在scene1中新建一层名为point,从第5帧到第25帧建立关键帧,并切依次输入

actions如下:POINT=“200”,POINT=“190”......POINT=“0”。

在scene1中新建一层名为text,用text tool拖出一个文本框,window---panels---text opion,在text opion面板中定义文本框为input text,

varable为score。双击action层第25帧,输入如下actions:

Tatal = Number(Tatal)+Number(Point);

Score = Tatal;

其中tatal为总分,point为本轮得分,number是actions中的一个函数,用来将参数,变量或表达式的值转换成数值。而Score = Tatal使得我们可以在score文本框中显示score即tatal的值。

鼠标动作:

现在的问题是我们该如何使得flash知道我们是否打中了小狗,是否得分,而且一旦我们打中小狗,小狗应当立刻钻回黑洞。要想实现这种效果,显然我们应当使用鼠标动作。还记得我们开始时在dogmovie中加入的按钮grid吗?开始编辑dogmovie原件,新建一层lable,将第5帧的frame. lable设为up,第20帧的frame. lable设为down。最后给按钮grid加上如下actions:

on (release) {

gotoAndPlay (“DOWN”);

tellTarget (“../knife”) {

gotoAndPlay (“UP”); }

tellTarget (“..”) {

gotoAndPlay (“END”);

}

}

on 的语法是:

on(mouseevent)

statement: 鼠标事件发生时执行的代码

mouseevent是鼠标事件,包括有:

press: 鼠标指针在按钮上并单击

release: 鼠标指针在按钮上被释放

releaseoutside: 鼠标指针在按钮外被释放

rollover: 鼠标指针移进按钮区域内

rollout: 鼠标指针移出按钮区域内

dragover: 鼠标指针在按钮上被按下,移出按钮再移回

keypress: 鼠标指针在按钮上,然后鼠标按下,再移出按钮区域

这段actions的含义是:当此按钮被鼠标点击时,影片跳至framelable为down的帧开始播放,代替鼠标动画的movieclip开始在frame. lable为

up处播放,而scene1则跳转至frame. lable为end处播放。

加入音乐

对于一个游戏,音乐是不可或缺的。首先我们来分析一下有哪些地方需要并需要哪种音乐。首先肯定要有背景音乐,而当打中小狗时也应当有声效的配合。回到scene 1,file---import,导入您喜欢的背景音乐,要注意的是,最好导入mp3格式的文件,这样不会导致你的源文件过大,而且音乐的长短最好和你的影片一样长,根据你的影片播放速度(比如12 frames/秒),你就可以估算出大概的播放时间并以此为依据寻找音乐。

在scene1中新建一层名为sound,从library里把音乐素材拖到sound中,window---panels---sounds弹出sound面板,在sync中设为stream,这样音乐会和动画同步播放,不会有大的失真。编辑knife原件,新建一层,file---import,导入您喜欢的音效,在第2帧新建关键帧,从library里把音效拖放到这一帧。

好!现在完成了整个游戏的制作,希望本文能对您熟悉flash的基本操作,了解actionscript语法有所帮助。

篇5:FLASH制作天气预报

天气预报

前几天在帝国看到有个天气预报组件,但不给代码,

FLASH制作天气预报

。。。。郁闷 所以自己在网上看了些资料后弄的

希望对大家有帮助

主要用到WebService类

其中用到两个事件onResult//数据传回, onFault//接受数据失败

帮助里有,很全的

全部代码:

//write BY 烟头

import mx.services. *;  //加载类

function getWeather  //自定义的函数

{

ws= new  (“www.webservicex.net/globalweather.asmx?WSDL”); //实例化WebService,括号中的地址是一个提供天气预报服务的 WebService 服务器,网上可以找到,这个是国外的,中国的城市不怎么全,谁有好的地址共享一下,呵呵

cityName =“Beijing”;

countryName=“China”; //城市和国家名

wsObj = ws.GetWeather(cityName, countryName); //服务器提供的接口函数,城市、国家名

wsObj.onResult = function (xml)

{

//解析传回的XML文件

weatherData = new XML (xmlData);

weatherData.ignoreWhite = true; //忽略空白

data_Array=new Array();//存储返回XML中有关信息的数组

for (var i = 1 ; i <= 17 ; i ++)

{

data_Array[i]=weatherData.childNodes [1].childNodes [i].firstChild;

_root.info.text=_root.info.text+data_Array[i];//场景中一个叫info的动态文本或TextArea组件,显示信息的

}

}

wsObj.onFault = function (fault_I )

{

trace(fault_I);//输出失败信息

}

}

//调用函数

getWeather ();

差不多就这些吧 ,源文件就不发了(做的太难看,。。),不会的问吧

呵呵

好就顶下。

篇6:flash相册制作

flash相册制作

1.先来个简单点的

先来看下效果:

本文源自:www.hudong.com

其实制作方法很简单,不需要有FLASH的'基础..

首先,要有款软件,名字叫FlashMaker,才361K,小得很? 点击下载地址

软件为绿色软件,可以放心用.

下载解压,安装以后..就可以用了

步骤很简单,3步就OK了,实际也就2步,第2步是加背景音乐,没必要(自己喜欢可以加)

如下图:

自己动手试吧..很简单吧!

好东西当然要大家分享娄!!!

大家在做出来FLASH相册以后,可能会是这个样子.

这是因为你没装FLASH播放器的原因..

因为我自己在用flashMX,所以不存在看不到的问题,要是你们用的自家机子的话,就去下个来

地址是soft.mumayi.net/downinfo/1444.html

补充下:

就是想要照片有更多的转换方式的话

就把鼠标放到,图片上,点右键,选择图片切换模式,如下图:

有什么不懂的就再看看这个:QQ空间集合

还有就是,做出来的FLASH怎么上传到网上去,获取一个网络地址,就请大家继续看:QQ空间集合

2.再来个稍稍难一点点的.

横向移动的flash相册..教程是个视频教程,方便大家学起来更容易点..下载地址在小组里

效果:

本文源自:www.hudong.com

篇7:如何学习制作flash

学习制作flash方法

1、做好策划

剧本策划是衡量一部Flash动画设计作品成功与否的重要标志。创建任何一个动画前,首先要有一个大概的轮廓,既知道自己要作什么。游戏或复杂的动画最好是先画一个流程图或写一个故事的剧本,就像拍MTV一样,有一个框架和比较清晰的结构,确定作品有哪几个镜头出现,每一个镜头有哪些演员和哪些场景,最后在确定绘图。

2、掌握画图

优秀的FLASH制作都是原画,效果和造型有自己的风格,让人一见难忘。所以画图是Flash动画设计的基本功,好多FLASH制作高手都是画画的高手,图画的不好的画基本上是作不出好的动画出来的,采用别人的东西拼出来的动画,永远也不会用自己的灵魂的。绘制出人物、场景和道具后,将绘制出的图形来制作各种人物表演的片断,将人物片断合成出各个场景的动画片断,最后将整个场景串起来,并加入音乐和歌词,进一步调整细节,完成整个设计制作。

3、讲求技术

⑴做好分类。制作动画时,应该及时的做好分类工作,静态的图形将其转化为图形符号要作按钮用的将其作为按钮符号,小的动画片段将其转化为影片符号。

⑵运用技巧。如遮罩效果引导线的使用,必要时结合使用。将导入的位图运用FLASH自带的工具转化位图为矢量图真正的矢量化或将其打散转化为图形符号。

⑶使用ACTION指令。ACTIONSCRIPT与JAVA及其相似,类似于一门高级语言。一般来说熟练常见的指令是有必要的。

⑷运用按钮。按钮是FLASH在人机交互和游戏中比不可少的,使用按钮的指令可以起到非常好的效果。按钮和按钮之间还可以嵌套,非常好,可以作出你想象不到的效果。

⑸使用LOADING。LOADING使得观众有一个比较好的承受心理,等待看出现的动画。

⑹灵活使用外挂。制作flash的外挂软件很多。制作3D的特效的有swift3D,vecta3D等。swift3D功能比较的强大,可以调节灯光物体,有时间轴,还有丰富的动画样式和材质库面板。Vecta3D相对较为简单它分为3Dmax的插件版本和独立运行的windows版本。动画的功能没有Swift3D强大,但是渲染速度快,精度高深受闪客们的喜爱。制作文字特效的有swish和Flax等软件。swish是一个非常傻瓜试的软件,操作简单但是功能强大。它能制作出flash文字爆炸、打字机、淡入淡出、风吹、波浪等非常绚丽的效果。flax是一个类似于Swish的软件,支持的效果更为简单绚丽,运行界面简洁漂亮。运用这些外挂最重要的一点是这些FLASH制作的工具制作出现的东西可以继续导入到FLASH中,继续加工,作出更为好看的效果。例如将Swift3D和Vecta3D分别到处swf文件,在导入到FLASH中编辑组合,结合出更加美妙的3D效果。Flax中的绚丽的文字效果,将其导出,然后导入到flash中,将其中的英文符号改成中文字,一样可以得到绚丽的中文字效果。

4、重视后期

后期基本包括配音,风格处理等等。

flash小技巧

一、使用任意颜色做背景

通常情况下,在Flash中动画背景颜色仅可以从216种网页安全色中选择。如果想使用网页安全色以外的颜色作为动画的背景色,可以使用以下方法:

1.在动画中绘制一个矩形(其他形状也可以),然后用目标背景色填充此物体;

2.按“Ctrl+M”调出动画属性对话框,单击背景颜色,鼠标箭头变为细管;

3.把鼠标移动到矩形上,选择。

然后就可以使用该颜色作为动画的背景颜色了。

二、使用透明背景

如果要使Flash动画背景透明,我们需要在Dreamweaver中对动画进行设置:

1.在DW中插入一个Flash动画,在对象属性栏中点击参数(Parameters)按钮;

2、在参数设定对话框中,点击加号新建一参数,左边参数项填入Wmode,右边参数值填入Transparent;

这样,用浏览器打开保存好的页面时,你就会发现Flash动画的背景已经变为透明。

反映到HTML代码上,即是在插入Flash的

标签中插入以下代码:

单实用的Flash技巧心得

许多爱好者虽然能作出不错的Flash动画,但他们对该软件本身还缺乏深刻的了解。一些搞美工的专业人员,有时又惧怕Flash中的Action代码部分。现就以Flash 5为例,谈谈Flash 5的一些较高级的技巧和心得。因为笔者就是一个见代码就头痛的人,所以与我有同感的朋友请放心,本文绝没有涉及Action的技巧。

1.遮罩的高级应用

深入理解遮罩(MASK),可产生一些很酷的效果。如:把静止的文字作为遮色片,移动渐变的小花纹图作为MASKED,可在文字轮廓内显示出小花纹的流动效果;把文字块保持静止,而不规则的遮色片逐渐扩张,能使文字产生一种不规则出没的效果;把产生移动渐变的文字块作为遮色片,利用与背景颜色一致的渐近色块作Show Masking,能让文字块产生一种淡入淡出的朦胧效果……还有很多很多,就看你的想象力和创意了。

2.位图的矢量化和矢量图的简化

矢量图容量小,放大无失真,在Flash上应用有无可比拟的优点。很多软件都可以把位图转换为矢量图,但实际上Flash 5已提供了把位图转换为矢量图的方法,简单有效。

先按“Ctrl+R”导入需转换的位图,选菜单:Modify>Trace Bitmap。在弹出的对话框中,把“Color”和“Minimum Area”设置得越低,后两项设置得越加紧密、越多转角(即下拉菜单越偏前面的选项),则得到的图形文件会越大,转换出的画面也越精细。对于节点复杂的矢量图,可按“Ctrl+Alt+Shift+C”键进行优化,可大幅降低图片容量。

3.隐藏浏览器中的Flash右键菜单

在浏览器中用鼠标右键点击Flash动画时,会弹出下拉菜单,你是不是觉得很烦呢?去掉它!在Flash 5中可轻松做到这一点。按Ctrl+Shift+F12弹出“Publish Settings”对话框,在“Dimensions”下拉框选“Percent”,不勾选“Display Menu”,然后发布即可。但要注意,只有在HTML页面中才会有效,单独播放Flash文件是不会有作用的。这个效果在Flash 3中则要用AfterShock才能实现。另外,如果你用Dreamweaver插入Flash文件,那么在Flash属性框中也可以选择实现这一功能。

4.精确控制变形

在两个对象间做“Shape”变形时,是不是有时有种怪怪的感觉,觉得在乱变,不是柔和地变化。其实只要小心地处理一下就行了:选取“Shape”变形的第一帧,按“Ctrl+SHIFT+H”就可加上一个变形关键帧,同时在变形的最后一帧也会同步出现相应的关键帧。适当地选择关键帧的数量,调整关键帧的位置,就可实现精确的变形效果,就像影片《未来战士》中的液态金属人一样酷!

5.音效的编辑技巧

在Flash 5中音效可以编辑,不会吧?但这是事实,而且很简单,功能也不弱。在Frame Properties对话框的“Sound”选项中拖动那个小方块,就可实现音效的音量大小、淡入淡出等效果,一切就这么简单。你会了吗?

6.控制背景音乐的开关

运用Flash 5提供的普通关闭音乐功能,很难实现点击一个按钮就能随意控制音乐的效果。那么,这里到底有什么奥妙呢?其实方法很简单。先制作一个“音乐控制开关”的“Movie Clip”,将两个同样的按钮放置在不同的影帧里,然后利用按钮的Action来切换这两个影帧,一个影帧放置背景音乐,并设定音乐为“Start”,另一个影帧里也放置背景音乐,但设定音乐为“Stop”。具体的Action我就不说了,因为我有言在先。不过笔者认为,作为一个Flash发烧友,这点Action是必不可少的。

7.输出GIF、AVI和MOV的问题

有的爱好者喜欢用Flash制作GIF动画,或因其他用处,需转换为AVI或MOV格式。但有时发现许多动画信息都无故丢失,究其原因是Flash动画中应用了Movie Clip。准确地讲,这不算一个技巧,但往往会让一些初学者困惑。根本的解决办法只有一个,那就是动画中不要用Movie Clip。当然你别再指望生成的GIF、AVI或MOV动画能支持SWF文件的交互了。

8.网页中FLASH动画的透明和无边框处理

Flash动画能像GIF动画那样透明吗?普通的HTML页面内容可否重叠在Flash动画之上?答案是肯定的,在Flash 5中可轻松做到这一切。按“Ctrl+Shift+F12”弹出“Publish Settings”对话框,在“Window Mode”下拉框选“Transparent Windowless”即可。但要注意,其效果是在HTML页面中加入的,并非Flash文件本身具有这一属性。试想在网页中你可轻松地加上Flash的动画背景,并配上声音,有多酷啊。它的兼容性极强,浏览者即使无F1ash播放插件也不会影响页面的视觉效果(仅仅不显示Flash文件,不会有空白区域或图标)。从此Flash可以与HTML页面完全地融合,网页的革命已经到来!

9.向日葵运动

假如要做一棵向日葵,围绕太阳作圆周运动。你可能觉得很简单:不就是让一棵向日葵沿一条圆形导线(Guide)作Motion吗?但如果要求向日葵旋转的同时,其花朵始终向着中心的太阳,又该怎么办呢?其实也很简单:在Frame Properties对话框的“Tweening”中勾选“Orient to Path Direction”即可。灵活采用这一方法,可产生好多意想不到的效果。

10.如何能确定浏览者有没有安装支持Flash的插件,并提供安装方法

最简单的方法是用Dreamweaver来编写HTML,当插入一个Flash文件的时候,会自动在网页中插入一句代码。当用户没安装Flash插件的时候,会自动到Macmmedia的指定位置下载

篇8:由浅入深学习Flash制作物体弹跳游戏

我也不知道该如何起这篇文章的名字,如果您觉得我的文章的名字起的不好,在过程中你可以自己改个好的名字,别忘了告诉我下啊!希望本文对开发Flash游戏入门的人有用。

开始给大家讲解如何制作。(每一步都有演示动画,在文章末尾还给出了所有演示动画的源文件!)

建立Flash文档,Ctrl+J修改影片属性。

然后建立一个影片剪辑元件,作为地图来使用,名字为terrain,形状如下图。

然后再建立两个按钮,一个是go,另一个是reset。最后建立一个char影片剪辑元件(看你的绘画工夫了,建立什么都可以)。

然后分别把三类元件(terrain,char,2个按钮)都放到场景中来。然后给char影片剪辑元件起实例名walker,地图terrain的实例名为terrain。然后选择第一帧,按F9打开动作面板,输入代码。

别忘了地图terrain的实例名为terrain。同样方法,不给截图了。

第一帧加入下面代码:

go=false;//主要是一个变量赋初始值

go按钮:

on (release) {

go = true;

}//开始运动

reset按钮:

on (release) {

go = false;

walker._x = 107;

walker._y = 49;

}//回到初始状态

然后char影片剪辑的action如下:

onClipEvent (load) {

gravity = 0.2;

yspeed = 0;

}

onClipEvent (enterFrame) {

if (_root.go) {

yspeed += gravity;

while (_root.terrain.hitTest(_x, _y+_height/2, true)) {

_y--;

yspeed = 0;

}

_y += yspeed;

}

}

效果如下(只要点GO按钮,物体就会掉下,点reset就会回到初始状态):

大家通过看上面的代码可以看到是利用速度总是增加的,所以物体接触地面时显得总是动。

改良上面代码:

onClipEvent (load) {

gravity = 0.2;

yspeed = 0;

}

onClipEvent (enterFrame) {

if (_root.go) {

yspeed += gravity;

while (_root.terrain.hitTest(_x, _y+_height/2, true)) {

_y--;

yspeed = 0;

}

if (!_root.terrain.hitTest(_x, _y+_height/2+1, true)) {

_y += yspeed;

} else {

yspeed = 0;

}

}

}

效果(通过yspeed = 0;使接触到地面的时候速度变为0):

通过上面两个步骤我们就制作好了这个游戏的基础部分。下面我们开始制作游戏使用键盘来控制移动。

用键盘来左右方向键来控制物体左右移动。

onClipEvent (load) {

gravity = 0.2;

yspeed = 0;

xspeed = 1;

}

onClipEvent (enterFrame) {

if (_root.go) {

if (Key.isDown(Key.LEFT)) {

_x -= xspeed;

}

if (Key.isDown(Key.RIGHT)) {

_x += xspeed;

}

yspeed += gravity;

while (_root.terrain.hitTest(_x, _y+_height/2, true)) {

_y--;

yspeed = 0;

}

if (!_root.terrain.hitTest(_x, _y+_height/2+1, true)) {

_y += yspeed;

} else {

yspeed = 0;

}

}

}

效果如下:

上面效果,大家通过用键盘方向键移动,如果物体到了地图的边缘,可以移动到外面去。下面我们继续改良代码,把物体的移动范围做一个限制。

onClipEvent (load) {

gravity = 0.2;

yspeed = 0;

xspeed = 1;

}

onClipEvent (enterFrame) {

if (_root.go) {

if (Key.isDown(Key.LEFT)) {

if (!_root.terrain.hitTest(_x-_width/2, _y+_height/4, true)) {

_x -= xspeed;

}

}

if (Key.isDown(Key.RIGHT)) {

if (!_root.terrain.hitTest(_x+_width/2, _y+_height/4, true)) {

_x += xspeed;

}

}

yspeed += gravity;

while (_root.terrain.hitTest(_x, _y+_height/2, true)) {

_y--;

yspeed = 0;

}

if (!_root.terrain.hitTest(_x, _y+_height/2+1, true)) {

_y += yspeed;

} else {

yspeed = 0;

}

}

}

上面代码控制了左右两边的界限,

效果如下(这时就不会移动到外面去了吧!):

下面我们开始改良代码使该物体能被键盘的空格键控制跳动。

onClipEvent (load) {

gravity = 0.2;

yspeed = 0;

xspeed = 1;

}

onClipEvent (enterFrame) {

if (_root.go) {

if (Key.isDown(Key.LEFT)) {

if (!_root.terrain.hitTest(_x-_width/2, _y+_height/4, true)) {

_x -= xspeed;

}

}

if (Key.isDown(Key.RIGHT)) {

if (!_root.terrain.hitTest(_x+_width/2, _y+_height/4, true)) {

_x += xspeed;

}

}

if (Key.isDown(Key.SPACE)) {

yspeed = -5;

}

yspeed += gravity;

while (_root.terrain.hitTest(_x, _y+_height/2, true)) {

_y--;

yspeed = 0;

}

if ((!_root.terrain.hitTest(_x, _y+_height/2+1, true)) or (yspeed<0)) {

_y += yspeed;

} else {

yspeed = 0;

}

}

}

效果如下(物体移动后按空格键试试!!):

大家通过测试上面影片,按空格键会不会跳呢??而且跳的还很高啊!!如果你总按空格键还可以跳出屏幕呢!哈哈!!!所以下面大家也该知道干什么了!!给跳的范围做一个限制,你非常聪明的。

onClipEvent (load) {

gravity = 0.2;

yspeed = 0;

xspeed = 1;

jumping = 0;

}

onClipEvent (enterFrame) {

if (_root.go) {

if (Key.isDown(Key.LEFT)) {

if (!_root.terrain.hitTest(_x-_width/2, _y+_height/4, true)) {

_x -= xspeed;

}

}

if (Key.isDown(Key.RIGHT)) {

if (!_root.terrain.hitTest(_x+_width/2, _y+_height/4, true)) {

_x += xspeed;

}

}

if ((Key.isDown(Key.SPACE)) and (!jumping)) {

yspeed = -5;

jumping = 1;

}

yspeed += gravity;

while (_root.terrain.hitTest(_x, _y+_height/2, true)) {

_y--;

yspeed = 0;

jumping = 0;

}

if ((!_root.terrain.hitTest(_x, _y+_height/2+1, true)) or (yspeed<0)) {

_y += yspeed;

} else {

yspeed = 0;

jumping = 0;

}

}

}

最终演示效果:

最终一个小游戏就做好了!!不难吧!!希望大家支持我!支持本站。谢谢!差点忘了!!以上所有演示动画的源文件提供给大家!!!

点击这里下载源文件(还记得解压密码吗??www.webjx.com)

篇9:由浅入深学习Flash制作赛车游戏教程

教程

赛车游戏我们总是遇到!今天给大家简单讲解一下,

先测试效果:

点击这里下载源文件

首先新建立一个赛车影片剪辑,由6个图层组成一个基本的赛车。放到舞台上的时候命名实例名为car1。

然后根据上面的车,制作一个赛车阴影影片剪辑。拖放到舞台上的时候命名实例名为shadow1。

然后建立一个新的空的影片剪辑。拖放到舞台上的时候命名实例名stepper。

然后选中该空影片剪辑输入下面代码:

onClipEvent(load){

speed1 = 0;

}

onClipEvent(enterFrame){

_root.step(1);

}

然后新建立一个层Action,输入下面代码:

function step(who) {

//check to see if the car in question is controlled by the player or by the computer

if (_root[“car”+who].code == “player”) {

//we will constantly decrease speed by multiplying it with a number below 1

if (this[“speed”+who]>0.3) {

this[“speed”+who] *= _root.speedDecay;

} else {

this[“speed”+who] = 0;

}

//the car will react to certain keys

//accelerate

if (Key.isDown(Key.UP) && this[“speed”+who]<_root.maxSpeed) {

this[“speed”+who] += _root.acceleration;

}

//brake (reverse)

if (Key.isDown(Key.DOWN)) {

this[“speed”+who] -= _root.backSpeed;

}

//steer left

if (Key.isDown(Key.LEFT) && this[“speed”+who]>0.3) {

_root[“car”+who]._rotation -= _root.rotationStep*(this[“speed”+who]/_root.maxSpeed);

}

//steer right

if (Key.isDown(Key.RIGHT) && this[“speed”+who]>0.3) {

_root[“car”+who]._rotation += _root.rotationStep*(this[“speed”+who]/_root.maxSpeed);

}

this[“rotation”+who] = _root[“car”+who]._rotation;

//we calculate the two components of speed (X axis and Y axis)

this[“speedx”+who] = Math.sin(this[“rotation”+who]*(Math.PI/180))*this[“speed”+who];

this[“speedy”+who] = Math.cos(this[“rotation”+who]*(Math.PI/180))*this[“speed”+who]*-1;

//apply the components on the actual position of the car

_root[“car”+who]._x += this[“speedx”+who];

_root[“car”+who]._y += this[“speedy”+who];

//position the shadow of the car

_root[“shadow”+who]._x = _root[“car”+who]._x-4;

_root[“shadow”+who]._y = _root[“car”+who]._y+2;

_root[“shadow”+who]._rotation = _root[“car”+who]._rotation;

}

if (_root[“car”+who].code == “computer”) {

}

}

然后再建立一个层,输入下面代码(用于初始化变量)

car1.code = “player”;

acceleration = 0.4;

speedDecay = 0.96;

rotationStep = 10;

maxSpeed = 10;

backSpeed = 1;

测试了!今天快下班了!!明天接着给大家把这个游戏弄的更加完整!后面还有两个步骤,大家通过测试上面的动画会发现车没有场地限制!之后我们将给它限定一定的路线,期望!

【Flash关于游戏制作研究之在场景中移动(...】相关文章:

1.flash课件动画制作

2.flash课件制作教程

3.学习FLASH动画制作的心得体会

4.Flash ActionScript2.0面向对象游戏开发

5.Flash教你怎样制作花瓣随风舞动

6.怎么学习制作游戏

7.如何成为一个合格的或者优秀的Flash制作...

8.思妙FLASH系列教程设置影片制作、播放、打印的参数

9.网页设计与制作课程的研究与应用论文

10.《混龄幼儿自主游戏实践研究》教学反思

下载word文档
《Flash关于游戏制作研究之在场景中移动(....doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

Flash关于游戏制作研究之在场景中移动(...相关文章
最新推荐
猜你喜欢
  • 返回顶部