首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PreloadJS加载RequireJS

使用PreloadJS加载RequireJS
EN

Stack Overflow用户
提问于 2015-11-08 02:22:17
回答 1查看 564关注 0票数 0

我是在加载模块时使用RequireJS的新手,尤其是像CreateJS这样的加载库。我想把PreloadJS和SoundJS结合使用。我已经通过RequireJS正确地加载了RequireJS,到目前为止我还没有遇到问题。我有问题的是PreloadJS。我使用这样的方式加载它:

代码语言:javascript
复制
require.config(
  {
    paths :
    {
        soundjs   : 'core/soundjs-0.6.1.min'
      , preloadjs : 'core/preloadjs-0.6.1.min'
    }

    ,shim :
    {
        'preloadjs' : { exports : "createjs" }
      , 'soundjs'   : { exports : "createjs.Sound" }
    }
  });

require(['src/MainGameScene' , 'src/Runner' , 'core/pixi.js' , 'core/tween.min' , 'preloadjs' , 'soundjs' ]
, function(MainGameScene , Runner , PIXI, TWEEN , PreloadJS , SoundJS)
{
  console.log("Endless Runner modules loaded.");

  var screenSize = { width : 960 , height : 500};
  var renderer = PIXI.autoDetectRenderer(screenSize.width , screenSize.height);

  new PIXI.loaders.Loader()
    .add("_assets/textures/p1_walk/Von.json")
    .add("_assets/textures/p2_walk/Don.json")
    .add("_assets/textures/p3_walk/Bon.json")
    .add("_assets/textures/tiles.json")
    .add("_assets/textures/textures.json")
    .once("complete" ,
      function()
      {
        var queue = new PreloadJS();
        SoundJS.alternateExtensions = ["mp3" , "ogg" , "wav" ];
        queue.installPlugin(SoundJS);
        queue.addEventListener("complete" , onFinishedLoading);
        queue.loadManifest(
          [
            {id : "bgm1"  , src : "_assets/bgm/bgm.mp3"}
           ,{id : "jump" , src : "_assets/sfx/jump.wav" }
           ,{id : "pickupcoin" , src : "_assets/sfx/pickupcoin.wav" }
          ]);
      })
    .load();

  function onFinishedLoading()
  {
    new MainGameScene(renderer , screenSize);
  }

  document.body.appendChild(renderer.view);
});

当我运行调试器时,它会向我显示PreloadJS对象具有这个属性,我认为这些属性不是PreloadJS的一部分。我还检查了原型是否正确,但我的原型是对象:

代码语言:javascript
复制
noConflict: function()
parse : function parse()
runInContext : function a(b, d)
stringify : function stringify()
__proto__ : Object

我还错过了什么?我还试着用这样的方式来避开PreloadJS:

代码语言:javascript
复制
    'preloadjs' : { exports : "createjs.LoadQueue" }
  , 'soundjs'   : { exports : "createjs.Sound" }

但我还是得到了一个有这些属性的对象。我需要RequireJS,这样我就可以用一个实心的预加载器获得我的SoundJS。我找不到任何关于在PreloadJS中使用RequireJS的文章,所以我确信我做了一些错误的、非常规的和没有文档的事情,所以我会感谢任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-23 21:25:31

好吧,搞定了。它不太理想,但预加载is并不是用AMD编写的。如果您的项目绝对要求您通过bower或其他方式包含您的依赖项,那么这可能是次优的,但面对绝对没有其他修复的地方,我对此非常满意。

基本上,使用您的preloadjs版本,并将整个文件包装在一个定义()调用中:

代码语言:javascript
复制
define(function(){
    //Paste the contents of preloadjs here
    //After all the preloadjs code you need to return the reference to createjs:
    return this.createjs
});

将此版本添加到依赖项列表中,一切都应正常工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33590054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档