
常用软件类: |
|杀毒安全 | |联络聊天 | |网络软件 | |多媒体类 | |系统工具 | |图形图像 | |系统工具 | |应用软件 | |行业软件 |
开发设计类: |
|动画制作 | |图像处理 | |3D设计 | |操作系统 | |站长学院 | |网络相关 | |WEB设计 | |数据库类 | |程序开发 |
这些参数设置好后,这时候电影剪辑就成为一个组件,对应图标也成为组件的图标
(也可以选择自己喜欢的图标)
c.编写组件代码。双击库中的组件CarControlBorder图标,进入该组件的舞台编辑区,在时间轴上新增加一层,命名为action.打开动作脚本编辑面板,加入代码如下:
movieclip.prototype.drehung = function() {
this._y -= (Math.cos(Math.PI/180*this._rotation))*w;
this._x += (Math.sin(Math.PI/180*this._rotation))*w;
};
movieclip.prototype.Grenze = function(minX, maxX, minY, maxY, faktor, nMinX, nMaxX, nMinY, nMaxY) {
if (tempo>0) {
tempo = tempo-faktor;
}
if (this._x>=maxX) {
this._x = nMinX;
}
if (this._x<=minX) {
this._x = nMaxX;
}
if (this._y>=maxY) {
this._y = nMinY;
}
if (this._y<=minY) {
this._y = nMaxY;
}
};
movieclip.prototype.carcontrol = function(faktorN, faktorP, fG, rG, BminX, BmaxX, BminY, BmaxY
, Sfaktor, BnMinX, BnMaxX, BnMinY, BnMaxY) {
if (Key.isDown(Key.LEFT) && Key.isDown(Key.UP)) {
this._rotation -= faktorN;
}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.UP)) {
this._rotation += faktorP;
}
if (Key.isDown(Key.LEFT) && w>.1 && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {
this._rotation -= faktorN;
}
if (Key.isDown(Key.RIGHT) && w>.1 && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {
this._rotation += faktorP;
}
if (Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN)) {
this._rotation += faktorP;
}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN)) {
this._rotation -= faktorN;
}
if (Key.isDown(Key.UP)) {
this.drehung();
}
if (Key.isDown(Key.DOWN)) {
this.drehung();
}
if (Key.isDown(Key.UP) && !(Key.isDown(Key.DOWN)) && w>-rG && wrG && fG>w ) {
w -= .05;
}
if ((w>.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {
this.drehung();
w -= .03;
}
if ((w<-0.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {
this.drehung();
w += .03;
}
if ((w<.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN)) && w>=0) {
w = 0;
}
if ((w>-.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN)) && w<=0
|| Key.isDown(Key.UP) && (Key.isDown(Key.DOWN))) {
w = 0;
}
this.Grenze(BminX, BmaxX, BminY, BmaxY, Sfaktor, BnMinX, BnMaxX, BnMinY, BnMaxY);
};
this._visible = 0;
_parent.onEnterFrame = function() {
_parent[_targetInstanceName].carcontrol(leftTurn, rightTurn, forwardSpeed
, backwardSpeed, BorderminX, BordermaxX, BorderminY, BordermaxY, Speedfactor
, NewMinX, NewMaxX, NewMinY, NewMaxY);
};
上面代码是整个组件的核心程序,你可能会这个长的代码感到恐惧,其实只要我们认真分析,代码还是很简单的,不信,我们来看看。
movieclip.prototype.drehung = function() {
this._y -= (Math.cos(Math.PI/180*this._rotation))*w;
this._x += (Math.sin(Math.PI/180*this._rotation))*w;
};
给电影剪辑原型定义定义一个函数drehung,这个函数成为电影剪辑的一个方法,这样就可以计算小车电影剪辑实体的运行状态(前进/后退,加/减速)由小车的角度值(_rotation)和变量w决定,w是一个为定义型变量,后面代码决定变量w数值的改变。
再来看看下一段代码,同样是给电影剪辑原形定义一个函数Grenze:
movieclip.prototype.Grenze = function(minX, maxX, minY, maxY
, faktor, nMinX, nMaxX, nMinY, nMaxY) {
if (tempo>0) {
tempo = tempo-faktor;
}
if (this._x>=maxX) {
this._x = nMinX;
}
if (this._x<=minX) {
this._x = nMaxX;
}
if (this._y>=maxY) {
this._y = nMinY;
}
if (this._y<=minY) {
this._y = nMaxY;
}
};
这段代码的作用主要是但小车跑出设定的区域,给小车的确定一个新的位置,这样当小车跑出时就又重新回到设置的区域中,小车活动的区域由组件的参数minX , maxX, minY , maxY决定。
再下面一段代码是来检测按键触发的,游戏要求按键盘的UP键,小车前进,相反按键Down,小车前进,按键Left,小车左拐弯,按键Right,小车右拐弯,同时要求必须在小车运行的过程中(即是必须按住Up或Down键)按Left/Right键小车才能左拐或右拐。
定义一个电影剪辑原形函数carcontrol, 函数有一系列参数,在最后代码段调用这个函数时,通过参数的传递来检测按键。代码主要是循环控制,具体不做说明,如果调用这个函数,这个函数也将调用drehung函数和Grenze函数。函数之间可以相互调用。
movieclip.prototype.carcontrol = function(faktorN, faktorP, fG, rG, BminX, BmaxX, BminY
, BmaxY, Sfaktor, BnMinX, BnMaxX, BnMinY, BnMaxY) {
if (Key.isDown(Key.LEFT) && Key.isDown(Key.UP)) {
this._rotation -= faktorN;
}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.UP)) {
this._rotation += faktorP;
}
if (Key.isDown(Key.LEFT) && w>.1 && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {
this._rotation -= faktorN;
}
if (Key.isDown(Key.RIGHT) && w>.1 && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {
this._rotation += faktorP;
}
if (Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN)) {
this._rotation += faktorP;
}
if (Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN)) {
this._rotation -= faktorN;
}
if (Key.isDown(Key.UP)) {
this.drehung();
}
if (Key.isDown(Key.DOWN)) {
this.drehung();
}
if (Key.isDown(Key.UP) && !(Key.isDown(Key.DOWN)) && w>-rG && fG>w) {
w += .05;
}
if (Key.isDown(Key.DOWN) && !(Key.isDown(Key.UP)) && w>-rG && fG>w) {
w -= .05;
}
if ((w>.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {
this.drehung();
w -= .03;
}
if ((w<-0.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN))) {
this.drehung();
w += .03;
}
if ((w<.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN)) && w>=0) {
w = 0;
}
if ((w>-.1) && (!Key.isDown(Key.UP)) && (!Key.isDown(Key.DOWN)) && w<=0
|| Key.isDown(Key.UP) && (Key.isDown(Key.DOWN))) {
w = 0;
}
this.Grenze(BminX, BmaxX, BminY, BmaxY, Sfaktor, BnMinX, BnMaxX, BnMinY, BnMaxY);
};