※本篇为LegendForFlashProgramming脚本引擎的使用教程第一篇。
一,关于LegendForFlashProgramming脚本引擎
http://blog.csdn.net/lufy_legend/article/details/6889424
二,准备工作
本次用LegendForFlashProgramming0.1来制作,你需要SanguojiForPC.swf文件,你可以到这里下载三国记黄巾之乱,使用里面的SanguojiForPC.swf,或者一会下载本教程的demo。
接下来准备一些图片,自己背景和人物等等。
三,开始制作LVG游戏。
1,首先建立一个文件夹hellow,然后将SanguojiForPC.swf放到文件夹里面。
2,在hellow文件夹里面建立一个script文件夹,在script文件夹下建一个文本文件MainSLG.lf。
3,在SanguojiForPC.swf同目录下,建一个images文件夹,准备一张背景图片back01.png放到里面。
4,然后在MainSLG.lf里添加:
//添加一个back层
Layer.add(-,back,0,0);
//读取图片文件,取名backdata
Load.img(backdata,images/back01.png);
//将图片数据backdata以backimg的名字,添加到back层上。
//参数分别是(层,图片名,图片数据名,坐标x,坐标y,长,高,透明度)。
Img.add(back,backimg,backdata,0,0,800,480,1);
打开SanguojiForPC.swf,可以看到我们已经给游戏添加了一张背景。
上面显示图片的代码,如果将透明度改为0,然后加上
Img.transition(backimg,fadeIn,0.1);
背景图片就会由透明缓慢显示出来,你可以试验一下。
5,在images文件夹里放入一张图片boy.png,然后在MainSLG.lf里添加:
//添加一个chara层
Layer.add(-,chara,0,0);
//读取图片文件,取名charadata
Load.img(charadata,data/images/boy.png);
//将图片数据charadata以chara01的名字,添加到chara层上,注意坐标我设为了-100,把图片放到了屏幕外面。
Img.add(chara,chara01,charadata,-100,150);
//移动图片到相应的位置
//参数分别是(图片名,目标坐标x,目标坐标y,移动速度)。
Img.moveTo(chara01,150,150,10);
运行SanguojiForPC.swf,可以看到人物boy从屏幕左边出现,移到了屏幕中间。6,继续添加代码
Layer.add(-,talk,0,0);
Load.img(selectbox,data/images/selectbox.png);
Load.img(selectbtnup,data/images/selectbtnup.png);
Load.img(selectbtnover,data/images/selectbtnover.png);
Img.add(talk,selectbox,selectbox,100,350,405,125,1);
这些我都在前面已经解释了,就不说了,运行一下就可以看到结果,我加入了一个对话框,但是,没有添加任何对话。
7,接下来在对话框里添加对话,添加如下代码。
//添加一个静态文本
Text.label(talk,name01,[ lufy ],120,360,15,#ffffff);
//添加一个动态文本
Text.wind(talk,talk,你好!欢迎来到「legend脚本世界」!我是<spanclass='red'>lufy</span>。为您介绍如何用L#脚本语言来制作游戏。,120,380,380,13,20);
运行SanguojiForPC.swf,来看一下8,接下来添加如下代码。
//游戏暂停,等待鼠标点击
Wait.click();
//改变talk的文本内容
Text.windChange(talk,首先、先来做一个游戏中比较常用的<spanclass='green'>选择分支</span>吧。);
Wait.time(20);
这里,需要解释的是Wait.click(),它代表等待鼠标点击,就是说,在上一步的对话显示完之后,要等待鼠标点击一下之后,游戏脚本才会继续显示下一步动作,这里就是显示Wait.click()下面的一段对话,Wait.time(20);则表示等待200毫秒。
接下来看对话的显示,我用了Text.windChange(),因为文本是之前已经显示到屏幕上的,我要改变它,有两种方法,一种就是我先把原来的文本删除,然后添加一个新的文本,另一种就是我现在用的这种,直接改变它的内容。
9,接下来添加选择分支。
//添加对话
Text.windChange(talk,你是<spanclass='blue'>男性</span>还是<spanclass='red'>女性</span>?);
//在talk层上添加一个select层
Layer.add(talk,select,120,400);
//添加两个按钮
//参数(层,按钮名,按钮文字,坐标x,坐标y,按钮mouseup图片,按钮mouseover图片,按钮mousedown图片,文字颜色)
Button.add(select,btn01,男性,0,10,selectbtnup,selectbtnover,selectbtnover,#ffffff);
Button.add(select,btn02,女性,0,40,selectbtnup,selectbtnover,selectbtnover,#ffffff);
//添加两个方法
function btn01click();
//移除select层
Layer.remove(select);
//设定变量yousex等于男性
Var.set(yousex,男性);
Text.windChange(talk,你选择了<span class='blue'>男性</span>!);
endfunction;
function btn02click();
Layer.remove(select);
//设定变量yousex等于女性
Var.set(yousex,女性);
Text.windChange(talk,你选择了<span class='red'>女性</span>!);
endfunction;
//添加按钮事件
//点击按钮btn01调用方法btn01click,点击按钮btn02则调用方法btn01click
Button.mousedown(btn01,btn01click);
Button.mousedown(btn02,btn02click);
//游戏暂停
Wait.ctrl(0);
//等待点击
Wait.click();
Text.windChange(talk,你是<spanclass='yellow'>30岁</span>以上吗?);
Layer.add(talk,select,120,400);
Button.add(select,btn01,30岁以上,0,10,selectbtnup,selectbtnover,selectbtnover,#ffffff);
Button.add(select,btn02,30岁以下,0,40,selectbtnup,selectbtnover,selectbtnover,#ffffff);
function btn01click();
Layer.remove(select);
Var.set(youage,30岁以上);
Text.windChange(talk,你的年龄在30岁以上!);
endfunction;
function btn02click();
Layer.remove(select);
Var.set(youage,30岁以下);
Text.windChange(talk,你的年龄在30岁以下!);
endfunction;
Button.mousedown(btn01,btn01click);
Button.mousedown(btn02,btn02click);
Wait.ctrl(0);
Wait.click();
//变量使用举例
Text.windChange(talk,原来你是@youage的@yousex!);
上面的代码,涉及到了按钮的添加,和按钮事件的添加,以及变量的使用方法,我都在关键地方加上了注释,需要说明的是Wait.ctrl(0);它是单纯的让游戏暂停,等待其他脚本指令,看看运行结果。
下面还加入了一些其他的简单的剧情,基本上都是用的上面所说的代码,需要提的是Layer.clear(-);,表示清除层上的所有对象,参数为(层)大家可以下载demo看一下代码
LVG游戏的制作,就讲到这里,下一贴,详细讲解一下如何用LegendForFlashProgramming来制作SLG游戏。
四,DEMO下载。
http://legend-demo.googlecode.com/files/LVG0.1.rar