2013-01-24 85 views
0

雖然簡單的主代碼在其他項目中工作,但我只是在主類中獲得一個簡單的畫布,這只是Raphael部分正在取代前者代碼:jQuery和Raphael在JS-「Classes」中

$(document).ready(function(){ new Main(); }); 
$.Class 

("Main", 
{ 
    init: 
    function() 
    { // Initialize the canvas. 
     var paper = Raphael("canvas",800,500); 
     paper.circle(100, 100, 50); 
    }, 

}); 

沒有main-「幀」 everything's精,當然......現在真的不知道了什麼可能是錯誤的星座...

謝謝你的閱讀。

+0

你有一個鏈接到'$ .Class'插件嗎? –

+0

* facepalm * ...你是對的...我剛剛複製了jquery庫...非常感謝你! – user2007630

回答

0

最大的可能性是,您沒有在頁面上的任何位置具有「畫布」ID的元素。我們不知道$ .Class是如何工作的,但總的來說,真正值得花些時間瞭解一下JS中的閉包如何工作,而不是試圖把它看作是一種典型的OOP語言。這將做到這一點(再次,假設「」在那裏):

$(document).ready(function(){ main(); }); 

function main() { 
    var paper = Raphael("canvas",800,500); 
    paper.circle(100, 100, 50); 
    return { 
     get_paper: function() { 
      return paper;  
     } 
    }; 

} 
+0

「canvas」元素位於html文件中。非常感謝你,它的工作原理......但你爲什麼必須專門退回紙張,否則你不必這樣做? – user2007630

+0

你不必 - 實際上,如果你不設置main()等於某些東西,那就沒用了。我們的想法是,您將每個對main()的調用視爲一個類的實例,並返回稍後可能需要使用的方法,因爲您無法再直接訪問「paper」。它存在於閉包中,就像傳統OOP語言中的私人財產。我強烈建議Crockford的「Javascript:好的部分」。 –