首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

碰撞检测有关问题

2013-01-11 
碰撞检测问题for(var i:uint1i8i++){var picture_mc:MovieClipthis.getChildByName(t+i+_mc) as

碰撞检测问题
for(var i:uint=1;i<=8;i++){
var picture_mc:MovieClip=this.getChildByName("t"+i+"_mc") as MovieClip;
picture_mc.addEventListener(MouseEvent.MOUSE_DOWN,downHandle);
picture_mc.addEventListener(MouseEvent.MOUSE_UP,upHandle)
}
function downHandle(e:MouseEvent):void{
e.target.startX=e.target.x;
e.target.startY=e.target.y;
e.target.startDrag(true);
}
function upHandle(e:MouseEvent):void{
var target_mc:MovieClip = e.target as MovieClip;
target_mc.stopDrag();
var name_str:String=target_mc.name;
var index:String=name_str.substr(1,1);
if(hitTestPixel(target_mc,this.getChildByName("t"+index+"bg_mc"))){
target_mc.x=this.getChildByName("t"+index+"bg_mc").x;
target_mc.y=this.getChildByName("t"+index+"bg_mc").y;
target_mc.scaleX=e.target.scaleY=2;
target_mc.removeEventListener(MouseEvent.MOUSE_DOWN,downHandle);
target_mc.removeEventListener(MouseEvent.MOUSE_DOWN,upHandle);
}else{
target_mc.x=target_mc.startX;
target_mc.y=target_mc.startY;
}
}
//碰撞检测
function hitTestPixel(shape1:DisplayObject,shape2:DisplayObject):Boolean{
var slx:Number=shape1.getRect(shape1).x;
var sly:Number=shape1.getRect(shapel).y;
var s2x:Number=shape2.getRect(shapel).x;
var s2y:Number=shape2.getRect(shapel).y;
var s1w:Number=shape1.width;
var s1h:Number=shape1.height;
var s2w:Number=shape2.width;
var s2h:Number=shape2.height;

s1w=s1w<1?1:s1w;
s1h=s1h<1?1:s1h;
s2w=s2w<1?1:s2w;
s2h=s2h<1?1:s2h;

var BmpData1:BitmapData=new BitmapData(s1w,s1h,true,0x00000000);
var BmpData2:BitmapData=new BitmapData(s2w,s2h,true,0x00000000);
BmpData1.draw(shape1,new Matrix(1,0,0,1-s1x,-s1y));
BmpData2.draw(shape2,new Matrix(1,0,0,1-s2x,-s2y));

var gp1:Point=shape1.localToGlobal(new Point(s1x.s1y));
var gp2:Point=shape1.localToGlobal(new Point(s2x.s2y));
var isHited:Boolean=BmpData1.hitTest(gp1,0x05,BmpData2,gp2,0x05);
BmpData1.dispose();
BmpData2.dispose();

return isHited;
}


提示1120: 访问的属性 shapel 未定义。

这是为什么啊,我刚学,书上的源代码啊,说是让调用,这个怎么调用啊。
[解决办法]
shape1 和 shapel 你觉得一样吗?最后一个字母一个是“一”一个是“L”,var sly:Number=shape1.getRect(shapel).y;
var s2x:Number=shape2.getRect(shapel).x;
var s2y:Number=shape2.getRect(shapel).y;
把这三行改成“一”。

热点排行