LayaAir 以滑鼠點為中心,用滾輪控制Sprite放大縮小
阿新 • • 發佈:2019-01-25
很多遊戲中 使用滑鼠滾輪來控制地圖的放大和縮小, 類似百度地圖的控制方式
官方給的東西少之又少 只能自己動手解決!
實現效果和這個基本一致
這個使用D3.js 實現的 我們需要用遊戲引擎實現,這個只能借鑑了
首先定義一些全域性變數
private pic:Laya.Sprite = new Laya.Sprite; //代表地圖的圖片層
private scale:number = 1; //放大的倍率 預設為1
private bgX:number = 0; //地圖的x點的座標
private bgY:number = 0; //地圖Y點的座標
然後畫出這個地圖, 我用一個圓形來替代這個地圖
this.pic = new Laya.Sprite; this.pic.graphics.drawCircle(Laya.stage.width/2, Laya.stage.height/2, 35, "#00ffff"); Laya.stage.addChild(this.pic);
開啟監聽事件
Laya.stage.on(Laya.Event.MOUSE_WHEEL,this,this.mouseWheel)
mouseWheel(e:Laya.Event){
console.info(e)
this.zoom(Laya.stage.mouseX,Laya.stage.mouseY,e.delta);
}
zoom 方法來控制放大和縮小
zoom(x:number,y:number,delta:number){ let ns:number = this.scale; if(delta>0){ ns += 0.05; }else{ ns -= 0.05; } ns = ns < 0.1 ? 0.1 : (ns > 5 ? 5 : ns); this.bgX = this.bgX - (x - this.bgX) * (ns - this.scale) / (this.scale); this.bgY = this.bgY - (y - this.bgY) * (ns - this.scale) / (this.scale); this.scale = ns; this.pic.pos(this.bgX,this.bgY); this.pic.scaleX = this.scale; this.pic.scaleY = this.scale; }
期間引用了很多大神的文章
感謝大神們的 無私分享精神 願 LayaAir 這個高速引擎能夠越走越遠