我使用R Shiny開發網頁並且還包含自己的R代碼。R Shiny和p5.js
我使用p5.js(https://p5js.org/)在網頁中顯示遊戲。
在官方網頁上說我有一個HTML和P5 JavaScript代碼連同JavaScript庫。如果我運行HTML,也就是說,單擊右鍵並按下chrome來顯示,我可以看到已啓動的示例(https://p5js.org/get-started/),沒有發生。
這是HTML代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!--<meta name="viewport" content="width=device-width, initial-scale=1">-->
<script language="javascript" type="text/javascript" src="libraries/p5.js"> </script>
<script language="javascript" type="text/javascript" src="sketch.js"></script>
<!-- this line removes any default padding and style. you might only need one of these values set. -->
<style> body {padding: 0; margin: 0;} </style>
</head>
<body>
</body>
</html>
當我做閃亮一樣,從運行R-Studio中的代碼,我沒有得到任何東西。我已將JavaScript文件存儲在www文件夾中,因爲它應該是這樣,我當前知道我的HTML稱爲JavaScript,因爲我在p5 javascript文件中設置了警報,但在安裝和繪製方法之外。問題是,即使加載了警報,似乎沒有調用setup和draw方法,顯然,它們不會加載畫布。我知道它們沒有被調用,因爲我在setup方法中調用了一個警告,該方法直接運行HTML文件,但是如果我從R-Studio運行相同的文件,則不會。
這是JavaScript代碼P5:
alert("GOOD1");
function setup() {
alert("GOOD2");
createCanvas(640, 480);
}
function draw() {
if (mouseIsPressed) {fill(0);}
else {fill(255);}
ellipse(mouseX, mouseY, 80, 80);
}
我使用的下一行代碼
... ,tabItem(tabName = "tabProcessing", htmlOutput("processingMasterThesis") ...
附加到標籤「processingMasterThesis」我相應的閃亮加載HTML頁面在server.R中的HTML文件的URL,因爲它應該是這樣的問題不在這裏。
爲什麼可能是這個原因?如果我直接調用HTML文件以在瀏覽器中加載,但如果我從R-Studio執行操作,那麼這起作用,爲什麼?
您是否在JavaScript控制檯中遇到任何錯誤? –
嗨@Kevin Workman,謝謝你的回答。當我嘗試加載網頁時出現此警告:'主線程上的同步XMLHttpRequest已被棄用,因爲它對最終用戶的體驗有不利影響。如需更多幫助,請查看https:// xhr.spec.whatwg.org /。在我的JavaScript文件中,我不直接使用這個請求調用,但也許p5js庫在內部執行。這似乎是問題在這裏,但如果它是這樣的,爲什麼我從RStudio網頁(我實際從RStudio運行的是ui.R文件)運行時出現此錯誤,而不是當我加載HTML文件右鍵點擊? – EaglesAzul
我已經解決了這個問題。首先,我必須在p5js文件中創建一個可以從HTML引用的變量,例如canvas = createCanvas(640,480);.一旦我聲明瞭全局變量,我只需告訴它的父項,讓我們說myCanvas.parent(「divCanvas」);.在此之後,您只需創建一個閃亮或純粹的html代碼,如下所示:#THE UI ,tags $ html(tags $ body( tags $ head(tags $ script(src =「app/libraries/p5.js 「)) ,tags $ head(tags $ script(src =」app/sketch.js「)) ,tags $ div(id ='divCanvas') )) – EaglesAzul