簡體   English   中英

使用RequireJS加載PreloadJS

[英]Loading PreloadJS using RequireJS

我是在加載模塊時使用RequireJS的新手,尤其是在加載諸如CreateJS之類的庫時。 我想將PreloadJS與SoundJS一起使用。 我已經通過RequireJS正確加載了SoundJS,到目前為止我還沒有遇到任何問題。 我遇到的問題是PreloadJS。 我使用這種方式加載它:

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的一部分。 我還檢查了原型是否正確,但是我將Object作為其原型:

noConflict: function()
parse : function parse()
runInContext : function a(b, d)
stringify : function stringify()
__proto__ : Object

我還想念什么? 我也試圖像這樣填充PreloadJS:

    'preloadjs' : { exports : "createjs.LoadQueue" }
  , 'soundjs'   : { exports : "createjs.Sound" }

但是我仍然得到具有這些屬性的對象。 我需要RequireJS,因此我的SoundJS可以帶有堅固的預加載器。 我找不到任何有關將PreloadJS與RequireJS一起使用的文章,因此絕對可以相信我做錯了,非常規的和未記錄的事情,因此,我將感謝您的幫助。

好的,解決了。 它不理想,但是preloadjs並不是為AMD而寫的。 如果您的項目絕對要求您通過Bower或其他方式包含依賴項,那么這可能不是最佳選擇,但是面對絕對沒有其他修復方法,我對此非常滿意。

基本上,使用您的preloadjs版本,並將整個文件包裝在define()調用中:

define(function(){
    //Paste the contents of preloadjs here
    //After all the preloadjs code you need to return the reference to createjs:
    return this.createjs
});

將此版本添加到您的依賴項列表中,一切都將正常運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM