首先获取两个距离
p1为大小圆心 也就是画摇杆外圆与内圆的 xy
p2为鼠标当前坐标
取得距离dist
然后获得的dist如果小于大圆半径-小圆半径
if(dist<=(100-40))
那么证明小圆此时在大圆里
将小球x坐标设为 当前鼠标坐标-圆心x的坐标(如果不减去圆心坐标会乱跑)
将小球y坐标设为 当前鼠标坐标-圆心y的坐标(如果不减去圆心坐标会乱跑)
如果大于(100-40)
需要获取角度
var angle:number = Math.atan2(e.stageY - 180, e.stageX - 360);
用鼠标当前坐标-圆心y
求得Math.atan2(Y, X);函数中的y
鼠标坐标-圆心x获得Math.atan2(Y, X);函数中的x
小圆.x=Math.cos(angle)*(100-40);
小圆.y=Math.sin(angle)*(100-40);
用求得的角度cos后求得x坐标 再乘100-40 保证不会超出大圆半径
用求得的角度cos后求得y坐标 再乘100-40 保证不会超出大圆半径
private p1:egret.Point = new egret.Point();
private p2:egret.Point = new egret.Point();
p2.x=e.stagex+360;
p2.y=e.stagey+180;
p1.x=360;
p1.y=180;
// console.log(180-angle6);
console.log(sky.x+"sky.y"+sky.y);
timer.start();
//
var dist = egret.Point.distance(p1, p2);
var angle:number = Math.atan2(e.stageY - 180, e.stageX - 360);
/
//下面的是用来算小球的位置 而不是角色位置
//console.log(dist);
if(dist<=(100-40))
{//e.stageY-nei.y>100){
nei.x=nei.x;//如果在圆环内 小球的坐标等于鼠标当前坐标-小球初始坐标x
nei.y=nei.y;//如果在圆环内 小球的坐标等于鼠标当前坐标-小秋初始坐标y
//nei.x=Math.cos(dd*Math.PI/180)*60;//ji suan xiao yuan x
// nei.y=Math.sin(dd*Math.PI/180)*60;// ji suan xiao yuan y
// this.ball.x = this.centerX + e.stageX - this.x;
// sky.x=Math.cos(ang.jieguo)*10;
// sky.y=Math.sin(ang.jieguo)*10;
// myScroller.viewport.scrollV =Math.sin(angle6)*(100-nei.y)+180+nei.y*10 //纵向滚动的位置
//myScroller.viewport.scrollH =Math.cos(angle6)*(100-nei.x)+360+nei.x*10;//横向滚动的位置
// nei.y=(nei.y-shpwai.y)/100;
}
else{
// this.ball.x = Math.cos(angle)*(this.circleRadius - this.ballRadius) + this.centerX;
nei.x=Math.cos(ang.jieguo)*(100-40);
nei.y=Math.sin(ang.jieguo)*(100-40);
// myScroller.viewport.scrollV = Math.sin(angle6)*(100-nei.y)+180+nei.y*10//纵向滚动的位置
// myScroller.viewport.scrollH =Math.cos(angle6)*(100-nei.x)+360+nei.x*10;//横向滚动的位置
}
下面是移动角色 与地图
想让小球 地图不停移动需要加个定时器
var timer:egret.Timer=new egret.Timer(1,0);
timer.addEventListener(egret.TimerEvent.TIMER,cont6,this);
摇杆被触摸后启动定时器
function cont6(){
console.log(jiaodu);
// this.removeChild(myScroller);
///
///
//想让小秋移动 需要sin cos角度 乘速度 再加小球x y
//想让小球不停移动需要加个定时器
sky.x=Math.cos(ang.jieguo)*10+sky.x;
sky.y=Math.sin(ang.jieguo)*10+sky.y;//Math.cos(ang.jieguo)*10
myScroller.viewport.scrollV =myScroller.viewport.scrollV+Math.sin(ang.jieguo)*10; //纵向滚动的位置
myScroller.viewport.scrollH =Math.cos(ang.jieguo)*10+myScroller.viewport.scrollH
// enemy.x =enemy.x+6; //纵向滚动的位置
// this.addChild(myScroller);
// timer.start();
}
被移动的物体
sky.x=Math.cos(ang.jieguo)*10+sky.x;
sky.y=Math.sin(ang.jieguo)*10+sky.y;//Math.cos(ang.jieguo)*10
其中需要用到上面的角度angle
物体x=Math.cos(angle)*速度+物体x
物体y=Math.cos(angle)*速度+物体y
背景的移动
var group = new eui.Group();
var img = new eui.Image("resource/assets/io.jpg");
group.addChild(img);
//创建一个Scroller
var myScroller = new eui.Scroller();
//注意位置和尺寸的设置是在Scroller上面,而不是容器上面
myScroller.width = this.stage.stageWidth;
myScroller.height = this.stage.stageHeight;
//设置viewport
myScroller.viewport = group;
this.addChild(myScroller);
var timer:egret.Timer=new egret.Timer(1,0);
timer.addEventListener(egret.TimerEvent.TIMER,cont6,this);
var jiaodu=180-ang.jieguo;
function cont6(){
console.log(jiaodu);
myScroller.viewport.scrollV =myScroller.viewport.scrollV+Math.sin(ang.jieguo)*10; //纵向滚动的位置
myScroller.viewport.scrollH =Math.cos(ang.jieguo)*10+myScroller.viewport.scrollH
// enemy.x =enemy.x+6; //纵向滚动的位置
// this.addChild(myScroller);
// timer.start();
}
停止移动
刚才的是不停移动 因为egret.TouchEvent.TOUCH_MOVE
触发了计时器
下面用egret.TouchEvent.TOUCH_END
停止计时器
小圆.addEventListener(egret.TouchEvent.TOUCH_MOVE,onnei, this);
function onnei(e: egret.TouchEvent):void{
if(e.stageX<=440||e.stageY<=240){//fang zhi bie de di fang di ji hou tong yang cao zuo yao gan
var xz=e.stageX;
var xy=e.stageY;
//console.log("xxxxxx"+xz+"yyyyyyyyyyyy"+xy);
nei.x=e.stageX-360;//rang zuo biao hui dao yuan xin
nei.y=e.stageY-180;
var xx=nei.x-shpwai.x;
var zx=(xx)/100;
ang.run(e.stageY,180, e.stageX,360);//=Math.atan2(nei.y-shpwai.y,nei.x-shpwai.x);
p2.x=nei.x+360;
p2.y=nei.y+180;
p1.x=360;
p1.y=180;
// console.log(180-angle6);
console.log(sky.x+"sky.y"+sky.y);
timer.start();
//
var dist = egret.Point.distance(p1, p2);
/
//下面的是用来算小球的位置 而不是角色位置
//console.log(dist);
if(dist<=(100-40)){//e.stageY-nei.y>100){
var dx:number=nei.x-360;//xian zai de dian dao yuan xin de x ju li
var dy:number=nei.y-shpwai.y;//xian zai de dian dao yuan xin de y ju li
var dixy=Math.atan2(dy,dx);// qiu de shi shang mian x y de jia jiao
var dd=180*dixy/Math.PI;//jiang qiu de jiao du zhuan huan wei hu du
var cc= Math.cos(dd*Math.PI/180)*6;
console.log(cc+"//");
console.log(nei.x+".....................");
nei.x=nei.x;//如果在圆环内 小球的坐标等于鼠标当前坐标-小球初始坐标x
nei.y=nei.y;//如果在圆环内 小球的坐标等于鼠标当前坐标-小秋初始坐标y
//nei.x=Math.cos(dd*Math.PI/180)*60;//ji suan xiao yuan x
// nei.y=Math.sin(dd*Math.PI/180)*60;// ji suan xiao yuan y
// this.ball.x = this.centerX + e.stageX - this.x;
// sky.x=Math.cos(ang.jieguo)*10;
// sky.y=Math.sin(ang.jieguo)*10;
// myScroller.viewport.scrollV =Math.sin(angle6)*(100-nei.y)+180+nei.y*10 //纵向滚动的位置
//myScroller.viewport.scrollH =Math.cos(angle6)*(100-nei.x)+360+nei.x*10;//横向滚动的位置
// nei.y=(nei.y-shpwai.y)/100;
}
else{
// this.ball.x = Math.cos(angle)*(this.circleRadius - this.ballRadius) + this.centerX;
nei.x=Math.cos(ang.jieguo)*(100-40);
nei.y=Math.sin(ang.jieguo)*(100-40);
// myScroller.viewport.scrollV = Math.sin(angle6)*(100-nei.y)+180+nei.y*10//纵向滚动的位置
// myScroller.viewport.scrollH =Math.cos(angle6)*(100-nei.x)+360+nei.x*10;//横向滚动的位置
}
//var radius=100;
// console.log(angle6);
}
小圆.stage.addEventListener(egret.TouchEvent.TOUCH_END,leavenei, this);
function leavenei(){
timer.stop();
}