1

我正在使用Phaser 框架在 Visual Studio(2015,社区)中创建游戏。

虽然我可以成功地为不是 OO 的小型项目获得 Intellisense,但当我尝试切换到面向对象的 JavaScript 时,我失去了 Intellisense。

引导.js

/// <reference path="../lib/phaser-2.4.4.js" />
var BasicGame = {
};

BasicGame.Boot = function (game) {
    // This gives me Intellisense as expected:
    game.input.maxPointers = 1;
};

BasicGame.Boot.prototype = {
    init: function () {
    },

    preload: function () {
    },

    create: function () {
        // This is valid, but I don't get Intellisense.
        // Can I help VS understand what type 'this' is?
        this.state.start('Preloader');
    }
};

在创建方法的情况下,我能否以某种方式协助 Visual Studio(2015/Code/higher)使其了解“this”关键字的类型?

其他相关文件,对于那些不熟悉 Phaser 框架 OO 模板的人:

索引.html

<!DOCTYPE html>
<html>
<head>
    <title>HTML5 Shoot 'em Up in an Afternoon</title>
    <meta charset="utf-8" />
    <link rel="shortcut icon" href="favicon.ico" />
    <style type="text/css">
        body {
            background: #333;
            margin: 0;
        }
    </style>
    <script src="lib/phaser-2.4.4.min.js"></script>
    <script src="src/boot.js"></script>
    <script src="src/preloader.js"></script>
    <script src="src/mainMenu.js"></script>
    <script src="src/game.js"></script>
    <script src="src/app.js"></script>
</head>
<body>
    <div id="gameContainer"></div>
</body>
</html>

为简洁起见,preloader.js、mainMenu.js 和 game.js 被排除在外。它们包含很像上面的 boot.js 的设置。

应用程序.js

window.onload = function () {
    var game = new Phaser.Game(800, 600, Phaser.AUTO, 'gameContainer');

    game.state.add('Boot', BasicGame.Boot);
    game.state.add('Preloader', BasicGame.Preloader);
    game.state.add('MainMenu', BasicGame.MainMenu);
    game.state.add('Game', BasicGame.Game);

    game.state.start('Boot');
};
4

1 回答 1

0

对于它的价值,我在一个多月前决定开始考虑使用 TypeScript 而不是原生 JavaScript 进行开发。

这导致了我想要的 Intellisense,并以一种对我来说更高效的方式进行编程。

感谢 Claies 对我的问题的评论,当我看到我可以学习 TypeScript 并从框架中得到我想要的东西时,这让我更容易接受。

保持问题开放,以防最终有一种方法可以解决最初提出的问题。

于 2015-12-26T16:44:13.397 回答