虽然一直在用FLASH,但都是前台的多,后台做得很少。这次因为多媒体中有一个拖动的游戏,搞不定,请各位朋友帮忙。
我使用的Flash版本是MX中文版,可惜参考资料全是FLASH5英文版的,以为自己一辈子不会用AS的--->>>
情况如下:
有一个按钮物件-->“Class”,当鼠标左键按下时拖动,左键放开时停止拖动,这步已经由以下语句完成:
on (press) {
startDrag("Class", true);
}
on (release, releaseOutside) {
stopDrag();
}
目前遇到的难处是:
要在鼠标左键放开时判断CLASS是否在65<=X<=190,24<=Y<=145,如果符合条件上,则CLASS缩小到40%停止在鼠标左键放开的位置,如果不合条件,CLASS物件回到原位。
以上代码应该如何添加代码句,请各位指点,UP无分,本贴分数只给第一个代码经过测试有效并且无错的高手。多谢!
---------------------------------------------------------------
我的方法有下面几种:
第1种方法,建一透明的影片,大小和位置设成“65<=X<=190,24<=Y<=145",然后用再用FLASH脚本判断是否在拖动之后与这个重叠(用hittest判断),如果是的话就调整尺寸咯,这个是比较简单的方法咯
第2种方法,不建透明影片,写脚本来判断位置,用_x>? && _x<? && _y>? && _y<?的形式来
第3种方法嘛,没有前两种好,我觉得第一种比较好,代码理少得多,我只说方法,代码你自己写吧,别太懒咯~`````^_^
---------------------------------------------------------------
on (press) {
startDrag("Class", true);
XXXXX=this._x;
YYYYY=this._y;
}
on (release, releaseOutside) {
stopDrag();
if (65<=this._x<=190 and 24<=this._y<=145){
this._scale=40;
}else{
this._x=XXXXX;
this._y=YYYYY;
}
}
---------------------------------------------------------------
// by eagle(128)
var oldx =原始X值; //定义要拖动的影片class的初始x位置
var oldY =原始X值; //定义要拖动的影片class的初始y位置
this.onMouseDown = function() {
class.startDrag(true); //按下鼠标,拖动
};
this.onMouseUp = function() {
if (((class._x>=65) && (class._x<=190)) &&((class._y>=24) && (class._y<=145))) {
class._xscale=40; //满足条件,zscale缩小为40%
class._yscale=40; //满足条件,yscale缩小为40%
} else {
class._xscale=100;
class._yscale=100; //这两条不能少,否则就一次之后就不能恢复原状
class._x=oldx;
class._y=oldy; //这两条回到原始位置
}
class.stopDrag(); //停止拖动
};
提一点建议,作为游戏,上面定义都只能说太过简单,而且做程序最忌讳用绝对坐标和绝对路径。
作为单个的对象运行还行,但涉及多个对象时,尽量定义一个结构,可能要省些时间。对于范围的限定,可以用一个影片符号的左、右、上、下来限定。而不是用具体的数值,因为你一旦改变其在影片中的层次,恐怕这个定义就没有任何意义。比如你在场景中是这个值,哪天一旦转成影片符号,又要从新定义,不如用相对值,不论在哪,都不用变。(包括上面的oldx,oldy的定义。)
另外,一旦改变一个对象的属性,如果没有到此结束,记得要设法使它恢复原状。比如上面的
class._xscale=100;
class._yscale=100;
这应该是个很单纯的问题。