在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5  HTML/ 如何移動(dòng)整個(gè)隊(duì)列并進(jìn)行canvas描繪。

如何移動(dòng)整個(gè)隊(duì)列并進(jìn)行canvas描繪。

想要完成下面的效果圖,目前進(jìn)度,move:方法達(dá)不到想要的自動(dòng)以速度位移2的速度移動(dòng),
代碼圖.png

var enemy = new Enemy(30,50,50,2);
enemy.draw();
enemy.moove();
function Enemy(x,y,size,speed){
          this.x = x,
          this.y = y,
          this.size = size,
          this.speed = speed //反彈系數(shù)
        }

        /**
         * 原型方法
         * @type {draw描繪出10個(gè)怪獸,clear清除畫布,move移動(dòng)怪獸隊(duì)列}
         */
        Enemy.prototype = {
            draw:function(){
                 for(let i=0;i<10;i++){
                   enemys[i] = new Image();
                   enemys[i].src ='./img/enemy.png';
                   enemys[i].onload = function(){
                      enemy.x += 50;
                      context.drawImage(enemys[i], enemy.x, enemy.y, enemy.size, enemy.size);
                    };
                 }
              },
              clears:function(){
                context.clearRect(30, 0, canvas.width, canvas.height);
              },
              // move:function(){
              //     var length = enemys.length; 
              //     if(enemy.x+enemy.speed > canvas.width 
              //     || enemy.x + enemy.speed < 0 
              //     || enemy.y + enemy.speed > canvas.height
              //     || enemy.y + enemy.speed < 0
              //     ){speed  *=-1}
              //     enemy.x +=enemy.speed;
              //     enemy.clears();

              //     enemy.draw();
              //     // context.drawImage(planeImage, plane.x, plane.y, plane.width, plane.height);          
              //     requestAnimationFrame(enemy.move);
              // },
             move:function(){
              enemy.x +=enemy.speed;
              enemy.clears();
              enemys.splice(0,enemys.length);
              enemy.draw();
              // requestAnimationFrame(enemy.move());
             }
        }

效果圖.png

回答
編輯回答
拮據(jù)

requestanimationframe 里調(diào)用位置平移 平移量為 (2 Math.sin(offsetAngle)/60, 2 Math.cos(offsetAngle)/60)

2017年12月8日 06:38
編輯回答
做不到

在move方法里設(shè)置定時(shí)器.定時(shí)器執(zhí)行draw方法.
另外在draw方法里一直創(chuàng)建對(duì)象不好.
可以先創(chuàng)建個(gè)init方法.創(chuàng)建完對(duì)象,存在數(shù)組中,在draw方法在修改對(duì)象屬性就可以了

2017年2月9日 01:14
編輯回答
孤島

我覺得你的結(jié)構(gòu)很不好,導(dǎo)致了你后續(xù)代碼已經(jīng)寫不下去了
嘗試著換一種思路,一個(gè)游戲有一個(gè)啟動(dòng)入口,我們叫Game
在Game里會(huì)用定時(shí)函數(shù),也就是requestAnimation不斷執(zhí)行要刷的函數(shù)
在要刷的函數(shù)里最重要的執(zhí)行兩個(gè)方法
一個(gè)update 用來更新你你的所有場(chǎng)景內(nèi)對(duì)象的位置信息 update里會(huì)調(diào)用所有對(duì)象的update來更新位置
一個(gè)render 用來繪制你的所有場(chǎng)景內(nèi)對(duì)象 render會(huì)調(diào)用所有對(duì)象的draw方法去繪制圖像
這時(shí)你會(huì)發(fā)現(xiàn)你需要一個(gè)全局?jǐn)?shù)據(jù)來管理這些信息
同時(shí)把Enemy抽象出來,想多要一個(gè)Enemy就new一個(gè)
https://segmentfault.com/a/11... 可以看一下這篇對(duì)微信小游戲打飛機(jī)demo的分析 希望可以幫到你

2017年4月7日 08:50
編輯回答
笑浮塵

推薦使用https://www.github.com/PengJi...
這是一個(gè)canvas 2d 渲染庫,體量小,功能強(qiáng)大,支持畫圖,圖形綁定時(shí)間,拖拽,放大縮小等。

2018年8月30日 01:49