木子屋 Dnawo's BLOG

Flash实现人物在界面上行走

👤 dnawo 📅 2007-06-16 👁 5731 👍 0 💬 0 🔄 来源:本站原创
pic/20070616/games.swf

一、主要元件

1.动态文本(text1):用于显示人物坐标
2.人物元件(girl)
3.透明按钮(btn1):主要利用其点击事件来激发函数获取鼠标位置

本例所用素材(女孩、狗、地图)均为我弟张远兴制作的像素图,在此表示感谢!

二、ActionScript

1.帧脚本

//全局变量
var speed:Number = 25; //移动速度 单位:px/s
var speed2:Number = 100; //循环间隔  单位:ms
var time:Number; //总时间
var time2:Number = 0; //计时器
var Lx:Number,Ly:Number; //单位时间位移
var Intervalid:Number;
var x1:Number = girl._x; //初始X坐标为人物X坐标
var y1:Number = girl._y; //初始Y坐标为人物Y坐标
var x2:Number,y2:Number; //终点X、Y坐标

btn1._width = Stage.width; //按钮宽为屏幕宽
btn1._height = Stage.height; //按钮高为屏幕高

//函数:计算Lx,Ly
function returnLxLy(){
	var L:Number; //两点间路程
	x2 = _root._xmouse;
	y2 = _root._ymouse;
	//Math.sqrt(Math.pow(Math.abs(3-7),2))
	L = Math.sqrt(Math.pow(Math.abs(x2)-Math.abs(x1),2) + Math.pow(Math.abs(y2)-Math.abs(y1),2));
	time = L / speed;
	Lx = ((x2-x1)*speed*speed2)/(L*1000);
	Ly = ((y2-y1)*speed*speed2)/(L*1000);	
}

//函数:移动人物
function moveto(){
	time2 = time2 + speed2/1000;
	if(time2>time){clearInterval(Intervalid);}
	x1 = x1 + Lx;
	y1 = y1 + Ly;
	girl._x = x1;
	girl._y = y1;
	text1.text = "坐标:" + Math.round(x1) + ":"+ Math.round(y1);
}

2.按钮点击事件脚本

on (release) {
	time2 = 0;
	clearInterval(Intervalid);
	returnLxLy();
	Intervalid = setInterval(this, "moveto", speed2);
}


三、本例源码:点击下载

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 几个FlashActionScript 下一篇 → Flash 8 帮助文件curveTo方法中画圆函数的语义错误