创建 fish-mother.ts 文件

    这里我们先把鱼妈妈定位到画布的中心点,然后载入一下图片,使用translate定义一个相对定位的中心点,就像relateiveabsolute 一样。

    1. import { ctx_one, cvs_height, cvs_width } from "./init";
    2. // 鱼妈妈
    3. class FishMonther{
    4. x: number = cvs_width / 2; // 坐标轴 x
    5. y: number = cvs_height / 2 ; // 坐标轴 y
    6. bigEye = new Image(); // 眼睛
    7. bigBody = new Image(); // 身体
    8. BigTail = new Image(); // 尾巴
    9. constructor(){
    10. this.bigEye.src = 'assets/img/bigEye0.png';
    11. this.bigBody.src = 'assets/img/bigSwim0.png';
    12. this.BigTail.src ='assets/img/bigTail0.png';
    13. }
    14. draw(){
    15. ctx_one.save();
    16. ctx_one.translate(this.x, this.y); // 定义相对定位的坐标中心点
    17. ctx_one.drawImage(this.bigEye, -this.bigEye.width / 2, -this.bigEye.height / 2); // 居中,所以向左移动宽度的一半,向上移动宽度的一半
    18. ctx_one.drawImage(this.bigBody, -this.bigBody.width / 2, -this.bigBody.height / 2);
    19. ctx_one.drawImage(this.BigTail, -this.BigTail.width / 2 + 30, -this.BigTail.height / 2); // 这里的尾巴,往右移动30像素,让它在身体的后面。
    20. ctx_one.restore();
    21. }
    22. }
    23. export default FishMonther;

    在 init.ts 初始化一下。

    1. import FishMother from "./fish-mother";
    2. let anemones: Anemones , fruits: Fruits, fish_mother: FishMother;
    3. fish_mother = new FishMother()
    4. export { fish_mother }

    在 game-loop.ts 里面调用绘制方法

    使用ctx_one.clearRect方法避免重叠。

    1. import { bgPic, cvs_width , cvs_height, ctx_two, ctx_one, anemones, fruits, fish_mother } from "./init";
    2. // 清除画布上的东西,再进行绘制,要不然的话会多次绘制而进行重叠。
    3. ctx_one.clearRect(0, 0, cvs_width, cvs_width);
    4. // 绘制鱼妈妈
    5. fish_mother.draw()

    绘制鱼 - 图1