2013-11-03 2 views
1

그래서 처리하기 전에 PDJ 파일을 processing.js의 PJS 파일에 저장하여 대역폭을 절약하고 코드를 쉽게 축소 할 수있었습니다.Processing.js 미리 컴파일 된 스크립트가 작동하지 않고 "PJS 컴파일이 지원되지 않습니다"오류가 발생합니다.

이미 잔뜩 시도하고 나는 다음과 같은 두 가지 질문과 답변을 읽어

How to precompile processingjs sketch to speed load times?

How to have multiple processing.js sketches running at the same time

그러나로드하지 않고 방화범은 저에게이 제공 :

uncaught exception: PJS compile is not supported 

나는 PDE 파일을 읽는 "일반"버전을 가지고 있지만 차라리이 파일을 갖고 싶습니다. 다시 프로젝트.

여기에 HTML 코드 api.1.0.0.min.js는 html5의 전체 화면 메소드가 통합 된 processing.js v1.4.1 API이며 minim도 포함되어 있으며 "일반"버전에서도 동일하게 작동합니다 non-api 버전의 processing.js에 대한 수정 사항). 이 여기에없는 이유는 그래서

<!DOCTYPE html> 
<html> 
<title>Ikben V1.01</title> 
<center> 
<style type="text/css"> 
    html {overflow: hidden;} 
    body{margin: 0; padding: 0} 
    :-webkit-full-screen #IkbenCanvas{width: 100%; height: 100%;} 
</style> 
<head> 
    <canvas id="IkbenCanvas"></canvas> 
</head> 
<body> 
    <script src="../api.1.0.0.min.js" type="text/javascript"></script> 
    <script id="Sketch" src="ikbenweb.pjs" type="text/javascript"></script> 
    <script> 
     new Processing(IkbenCanvas, Sketch) 
    </script> 
</body> 
</center> 
</html> 

는 아파치 글꼴 유형 및 캐싱 정보를 제공합니다.

나는 processing.js 도우미 도구를 사용하여 변환 된 PJS 파일 (. 아무것도 변경되지 않습니다 프리로드에 대한 주석을 제거) 는

/* @pjs preload="data/a.png,data/b.png,data/c.png,data/d.png,data/e.png,data/f.png,data/g.png,data/h.png"; */ 

(function($p) { 

    var song = null; 
    var minim = null; 
    minim = new Minim(this); 

    var nonsense = null; 
    var numberOfImages = 0, 
     imageSize = 0, 
     heightCounter = 0, 
     widthCounter = 0; 
    var loopingBackground = false, 
     audioStarted = false; 
    var images = $p.createJavaArray('$p.PImage', [8]); 

    function setup() { 
     $p.textAlign($p.CENTER, $p.CENTER); 
     $p.imageMode($p.CENTER); 
     $p.frameRate(30); 
     numberOfImages = 3; 
     $p.noStroke(); 
     nonsense = $p.loadStrings("data/text.txt"); 
     images[0] = $p.loadImage("data/a.png"); 
     images[1] = $p.loadImage("data/b.png"); 
     images[2] = $p.loadImage("data/c.png"); 
     images[3] = $p.loadImage("data/d.png"); 
     images[4] = $p.loadImage("data/e.png"); 
     images[5] = $p.loadImage("data/f.png"); 
     images[6] = $p.loadImage("data/g.png"); 
     images[7] = $p.loadImage("data/h.png"); 

     horseSong = minim.loadFile("data/song.mp3"); 
    } 
    $p.setup = setup; 

    function draw() { 
     $p.size(self.innerWidth, self.innerHeight); 
     if ($p.millis() > 2500) { 
      if (!audioStarted) { 
       horseSong.loop(); 
       audioStarted = true; 
      } 
      heightCounter = $p.height; 
      widthCounter = $p.width; 
      loopingBackground = true; 
      while (loopingBackground) { 
       $p.fill($p.random(0, 255), $p.random(0, 255), $p.random(0, 255)); 
       $p.rect(widthCounter/10 - $p.width/10, heightCounter/10 - $p.height/10, widthCounter, heightCounter); 
       heightCounter -= heightCounter/10; 
       widthCounter -= widthCounter/10; 
       if (heightCounter <= $p.height/10) loopingBackground = false; 
      } 
      for (var i = 0; i < numberOfImages; i++) { 
       imageSize = $p.__int_cast($p.random($p.height/20, $p.height)); 
       $p.image(images[$p.__int_cast($p.random(0, images.length))], $p.random(100, $p.width - 100), $p.random(100, $p.height - 100), imageSize, imageSize); 
      } 
      $p.textSize($p.random($p.width/50, $p.width/5)); 
      $p.fill($p.random(0, 255), $p.random(0, 255), $p.random(0, 255)); 
      $p.text(nonsense[$p.__int_cast($p.random(0, nonsense.length))], $p.random(100, $p.width - 200), $p.random(100, $p.height - 200)); 
     } else { 
      $p.fill(130); 
      $p.rect(0, 0, $p.width, $p.height); 
      $p.fill(0); 
      $p.textSize($p.width/30); 
      $p.text("Press a button or click for fullscreen.", $p.width/2, $p.height/2); 
     } 
    } 
    $p.draw = draw; 

    function mouseClicked() { 
     toggleFullScreen(); 
    } 
    $p.mouseClicked = mouseClicked; 

    function keyPressed() { 
     toggleFullScreen(); 
    } 
    $p.keyPressed = keyPressed; 
}) 

답변

0

나는, 결국 API를 작업을 얻었다. 1.0.0.min.js 파일에는 processing-js-1.4.1-api, minim.js가 포함되어 있으며 MDN의 toggleFullScreen() 메소드도 포함되어 있습니다.

<!DOCTYPE html> 
<html> 
<title>Ikben V1.02</title> 
<center> 
<style type="text/css"> 
    html{position:fixed;top:0;bottom:0;left:0;right:0}body{margin:0;padding:0} 
</style> 
<head> 
    <canvas id="appCanvas"></canvas> 
</head> 
<body> 
    <script src="data/api.1.0.0.min.js" type="text/javascript"></script> 
    <script> 
     var appCode = (function($p) { 
     var horseSong=null,minim=null 
     minim=new Minim(this) 
     var nonsense=["test","hoi","doei","foo","bar","stuff","hoi hoi hoi hoi hoi","test123","abcdef","123"],numberOfImages=3,imageSize=0,heightCounter=0,widthCounter=0,loopingBackground=!1,audioStarted=!1,images=$p.createJavaArray("$p.PImage",[8]) 
     function setup(){$p.textAlign($p.CENTER,$p.CENTER),$p.imageMode($p.CENTER),$p.frameRate(30),$p.noStroke(),images[0]=$p.loadImage("data/horse/a.png"),images[1]=$p.loadImage("data/horse/b.png"),images[2]=$p.loadImage("data/horse/c.png"),images[3]=$p.loadImage("data/horse/d.png"),images[4]=$p.loadImage("data/horse/e.png"),images[5]=$p.loadImage("data/horse/f.png"),images[6]=$p.loadImage("data/horse/g.png"),images[7]=$p.loadImage("data/horse/h.png"),horseSong=minim.loadFile("data/horse/song.ogg")}$p.setup=setup 
     function draw(){if($p.size(self.innerWidth,self.innerHeight),$p.millis()>2500){for(audioStarted||(horseSong.loop(),audioStarted=!0),heightCounter=$p.height,widthCounter=$p.width,loopingBackground=!0;loopingBackground;)$p.fill($p.random(0,255),$p.random(0,255),$p.random(0,255)),$p.rect(widthCounter/10-$p.width/10,heightCounter/10-$p.height/10,widthCounter,heightCounter),heightCounter-=heightCounter/10,widthCounter-=widthCounter/10,heightCounter>$p.height/10||(loopingBackground=!1) 
     for(var e=0;numberOfImages>e;e++)imageSize=$p.__int_cast($p.random($p.height/20,$p.height)),$p.image(images[$p.__int_cast($p.random(0,images.length))],$p.random(100,$p.width-100),$p.random(100,$p.height-100),imageSize,imageSize) 
     $p.textSize($p.random($p.width/50,$p.width/5)),$p.fill($p.random(0,255),$p.random(0,255),$p.random(0,255)),$p.text(nonsense[$p.__int_cast($p.random(0,nonsense.length))],$p.random(100,$p.width-200),$p.random(100,$p.height-200))}else $p.fill(130),$p.rect(0,0,$p.width,$p.height),$p.fill(0),$p.textSize($p.width/30),$p.text("Press a button or click for fullscreen.",$p.width/2,$p.height/2)}$p.draw=draw 
     function mouseClicked(){toggleFullScreen()}$p.mouseClicked=mouseClicked 
     function keyPressed(){toggleFullScreen()}$p.keyPressed=keyPressed 
     }) 
     new Processing(appCanvas, appCode); 
    </script> 
</body> 
</center> 
</html>