WebGL的支持我玩WebGL的和飛鏢,我無法弄清楚如何檢查是否一些對象有一定的方法。例如在JavaScript中,我會檢查WebGL是否可用window.WebGLRenderingContext
,但在Dart中有沒有相同的方法?您在達特
Q
您在達特
4
A
回答
8
IIRC Dart的目標之一是規範化瀏覽器定義的不一致之處。因此,WebGL將總是是「可用的」,因爲它的接口將始終存在於Dart中,或者您正在運行的瀏覽器沒有本地定義它們。
支持用是否WebGL的可能是最好的檢查你的Javascript做同樣的方式:
WebGLRenderingContext gl = canvas.getContext("experimental-webgl");
如果gl
爲null,則是不支持WebGL的。否則它是! (只是因爲在Javascript中存在window.WebGLRenderingContext
並不意味着WebGL被支持!這隻會告訴你瀏覽器能夠調度WebGL命令。你運行的系統可能不接受它,它仍然是最好的嘗試創建上下文並檢測它失敗時)
2
編輯:順便說一句,有初始化的WebGL上下文的飛鏢道:
RenderingContext gl = canvas.getContext3d();
if (gl == null) {
print("WebGL: initialization failure");
}
OLD答:
WebGLRenderingContext gl = canvas.getContext("experimental-webgl");
if (gl == null) {
print("WebGL is not supported");
return;
}
此代碼在Chrome瀏覽器JavaScript控制檯上打印「WebGL不受支持」,當我在chrome:// flags /下打開「禁用WebGL」時。
然而,隨着WebGL的火狐下禁用(關於:配置 - > webgl.disabled;真),它產生的Web控制檯錯誤:
NS_ERROR_FAILURE:組件返回失敗代碼:0x80004005的(NS_ERROR_FAILURE)[nsIDOMHTMLCanvasElement .getContext]
編輯:這是Firefox中的固定錯誤:https://bugzilla.mozilla.org/show_bug.cgi?id=645792
相關問題
- 1. 在達特
- 2. 排序地圖在達特
- 3. jQuery - 計數元素,直到您到達特定元素並停止計數
- 4. 您如何使用正則表達式
- 5. 您在您的SQL語法
- 6. 迴應中達特
- 7. 與谷歌達特
- 8. 分頁 - 您關注的推特人
- 9. 達特/ Objective-C和達特/ Java之間的互動
- 10. 您的付款將在3-5天內到達
- 11. extendTag在達特定製元素
- 12. 在達特朗切片地圖
- 13. 評價在C#中的特殊表達
- 14. 兩人在表達斯威夫特
- 15. 正則表達式在特定位置
- 16. Lambda表達式在科特林
- 17. bash腳本 - 爲您在輸出沒有特定的字符串
- 18. 在Active Directory中,您如何選擇特定的組織單位?
- 19. 通過API確定您是在「BuyBox」還是特色商戶
- 20. 您可以停止在特定按鈕(Bootstrap)上傳播嗎?
- 21. 在CLion中,您可以開始構建特定文件嗎?
- 22. 在您的計算機C中打印特定文件#
- 23. 正則表達式不特定的特殊字符在Perl
- 24. 在黑莓手機上,您如何安排您的應用在特定時間進入?
- 25. 您在DataAnnotation
- 26. 您在C++
- 27. 您在SQLAlchemy的
- 28. 您在IE9
- 29. 您在Bluemix
- 30. #1064 - 您在''
您在這裏問兩兩件事。 Toji回答「我如何正確檢測WebGL正在一臺機器上工作」,這實際上不是一個特定於Dart的問題。你的第二個問題更加微妙:「在Dart中,我可以通過檢查對象是否具有特定方法來執行特徵檢測嗎?」答案是否定的。在Dart中,類是在編譯時定義的,並且API是固定的。 –