以文本方式查看主题

-  ╋艺 镇╋  (http://zyzsky.com/bbs/index.asp)
--  ┣◇FLASH交流  (http://zyzsky.com/bbs/list.asp?boardid=5)
----  《翻牌游戏》制作过程  (http://zyzsky.com/bbs/dispbbs.asp?boardid=5&id=1689)

--  作者:卡西莫咄
--  发布时间:2008/6/20 11:37:30
--  《翻牌游戏》制作过程
 一、设置舞台

  打开 Flash MX 2004 ,新建文档,背景色自定,其他默认,确定。建立四个图层,从下往上分别命名为“说明”、“按钮”、“ AC ”、“标题”。

  二、制作元件

  1 、制作影片剪辑元件“图片 mc ”:( 1 )建立两个图层,从下往上分别命名为“图片”和“ AC ”。( 2 )在“图片”图层的 2 至 11 帧插入空白关键帧。在第 1 、第 2 两帧画上相同的图片,在 3 至 11 帧再画九幅不同的图片,图片大小均为宽 45 、高 60 ,且都用对齐面板进行左对齐、上对齐。( 3 )在“ AC ”图层的第 1 帧输入如下语句:
gotoAndStop(_parent.face+1);

  2 、制作影片剪辑元件“卡片背面”:( 1 )在图层 1 的第 1 帧画一个宽 45 、高 60 的无边框矩形,填充黑色,也用对齐面板左对齐、上对齐。

  3 、制作“隐形按钮”:在第 4 帧也画一个宽 45 、高 60 的无边框矩形,颜色随意,左对齐上对齐。

  4 、制作影片剪辑元件“卡片”:( 1 )建立四个图层,从下往上分别命名为“正面”、“背面”、“隐形按钮”和“ AC ”。( 2 )在“背面”图层第 1 帧放置“卡片背面”实例,使其左对齐上对齐,然后在第 5 帧把图片的宽度设为 1 ,创建补间动画。在第 6 帧插入空白关键帧。( 3 )在“正面”图层的第 5 帧拖入“图片 mc ”实例,左对齐上对齐;在第 10 帧、第 15 帧、第 20 帧均插入关键帧,分别把第 5 、第 15 两帧上的矩形宽度设为 1 ,为各段创建补间动画。( 4 )在“背面”图层上,把第 1 帧复制到第 20 帧,把第 5 帧复制到第 15 帧,在 15 至 20 帧创建补间动画。( 5 )在“隐形按钮”图层第 1 帧拖入“隐形按钮”实例,左对齐上对齐,然后在此隐形按钮上输入如下动作语句:
on (release) {
cardOpened = _root.exposedCard.length/2;
if (cardOpened<2) {
_root.exposedCard.push(cardNum, face);
gotoAndPlay(2);
}
}
( 6 )在“ AC ”图层第 1 帧输入如下语句:
var face;
var cardNum;
if (_global.first!= true) {
stop ();
}
( 7 )在“ AC ”图层第 10 帧输入如下语句:
function clearExposedCard() {
while (_root.exposedCard.length != 0) {
_root.exposedCard.pop();   // 一个一个从最后删除数组元素。
}
}
num = _root.exposedCard[0];
if (_global.first == true) {
gotoAndPlay("delay");   // 这个只在开始游戏的时候调用。
}
if (cardOpened == 0) {   //cardopened 在点击隐形按钮时产生。
stop();
}
if (cardOpened == 1) {   // 第二次点击变成 1 ,此时 _root.exposedCard.length 为 4 if (_root.exposedCard[3] == _root.exposedCard[1]) {  
// 第二号和第四号值一样,及值 face 一样时。第一号和第二号值 cardNum 值,及数值 1 , 2 , 3 等。
_root.score += 10;
_root["newcard"+num].removeMovieClip();
clearExposedCard();
this.removeMovieClip();
} else {
_root["newcard"+num].play();
_root.score -= 5;
clearExposedCard();
}
}
( 8 )在第 11 帧、第 21 帧分别建立帧标签“ turnBack ”和“ delay ”。
( 9 )在第 20 帧输入如下动作代码:
_global.first=false;
gotoAndStop (1);
( 10 )在第 55 帧输入如下动作代码:
gotoAndPlay ("turnBack");
( 11 )把“背面”图层延长到第 55 帧。
( 12 )在库面板中右击影片剪辑“卡片”,点链接,勾选“为动作脚本导出”,将标识符改为“ card ”,其他默认,点确定。

  5 、制作一个按钮元件“开始、或重新开始”。

  三、布置场景

  1 、返回场景 1 ,在说明图层的第 1 帧放置一个动态文本,将其变量命名为“ score ”,在第 3 帧插入帧。
   2 、在“按钮”图层第 1 帧拖入“开始”按钮,选中按钮实例,输入如下语句:
on (release) {
gotoAndPlay(2);
}
   3 、在“ AC ”图层的第 1 帧输入如下动作代码:
stop();
   4 、在“ AC ”图层的第 2 帧输入如下动作代码:
cardFront = new Array();
for (i=1; i<=20; i++) {
cardFront[i] = Math.round(i/2); // 产生一数组, 0 号和 1 号值一样, 2 号和 3 号值一样,依此类推。
}
for (i=1; i<=20; i++) {
tem = cardFront[i];
k = Math.floor(1+20*Math.random());
cardFront[i] = cardFront[k];
cardFront[k] = tem;   // 随机交换值, cardFront[i] 与 cardFront[k] 交换值
}
for (i=1; i<=20; i++) {
_root.attachMovie("card", "newcard"+i, i);
with (_root["newcard"+i]) {
_x = 265+((i-1)%5)*50;
_y = 80+Math.floor((i-1)/5)*65
}
_root["newcard"+i].cardNum = i;
_root["newcard"+i].face = cardFront[i];
}
_global.first=true;
score = 0;
exposedCard = new Array();
   5 、在第 3 帧输入如下动作代码:
stop();
   6 、在“标题”图层第 1 帧键入作品的标题、作者名及相关说明文字等。

  四、测试存盘