javascript - 阶段未在 TypeScript 中使用 window.onresize 进行更新 (0.9.1.1)

标签 javascript html typescript window-resize

我有绘制到 html5 Canvas 的 Renderer 类,我希望它在调整窗口大小时重新绘制内容。问题是 update() 代码只执行一次 - 在initialize() 内部 - 并且调整窗口大小不会执行任何操作。另一方面,每次调整窗口大小时都会执行 onWindowResized()。那么,错误在哪里呢?

/// <reference path="../lib/easeljs.d.ts" />
/// <reference path="../lib/tweenjs.d.ts" />
/// <reference path="../lib/soundjs.d.ts" />
/// <reference path="../lib/preloadjs.d.ts" />

class Renderer
{
    private mStage:createjs.Stage;
    private mShape:createjs.Shape;

    public initialize (stage:createjs.Stage):void
    {
        this.mStage = stage;
        this.mStage.autoClear = true;
        this.update ();

        window.onresize = this.onWindowResized;
    }

    public update ():void
    {
        if (this.mStage)
        {
            this.mStage.canvas.width = window.innerWidth;
            this.mStage.canvas.height = window.innerHeight;

            this.mShape = new createjs.Shape();
            this.mShape.graphics.beginFill("#dddddd");
            this.mShape.graphics.drawRect(0, 0, this.mStage.canvas.width, this.mStage.canvas.height);
            this.mShape.graphics.beginFill("#ff4400");
            this.mShape.graphics.drawCircle(this.mStage.canvas.width / 2, this.mStage.canvas.height / 2, 25);

            this.mStage.addChild(this.mShape);
            this.mStage.update();
        }
    }

    private onWindowResized (event:UIEvent):void
    {
        this.update();
    }
}

最佳答案

这里遇到的问题是,当事件执行时,它将在事件的上下文中(用于调整大小的窗口、用于单击的 DOM 元素、鼠标悬停等),而不是您的类 - 所以 this 不会成为你的类的句柄。

您可以通过使用...来解决它

window.onresize = this.onWindowResized.bind(this);

这是一个 bind 比粗箭头语法更优雅的例子。

关于javascript - 阶段未在 TypeScript 中使用 window.onresize 进行更新 (0.9.1.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19224244/

相关文章:

javascript - 温泉如何在项目上进行部分滑动

html - 向单个 div 添加填充

javascript - 允许用户更改 div 的文本

reactjs - React/Typescript - 使用 ref 时出现 typescript 错误 - 类型 'current' 上不存在属性 '(instance: HTMLInputElement | null) => void'

node.js - 无需 CLI 即可转换 Typescript

javascript - 在 Firefox 或 Chrome 中运行 COM 对象

javascript - 为什么图表中的数据显示不正确?

javascript - 查找数组值

html - 我们如何才能将 div 居中放置在左右两侧都有按钮的 div 中?

angular - 如何使用http.post发送图像