2011-03-04 31 views
2

畫布上HREF鏈接//我的問題的描述是這裏創建processing.js

我用processing.js這個代碼

void setup(){ 

size(window.innerWidth,window.innerHeight); 
} 

void draw() 
{ 
    fill(0,0,0); 
    text("About",760,312); 
} 

我的問題是我想要關於是一個href鏈接。當我點擊它會顯示一些頁面。所以我想知道如何使?????

感謝你..等待你的迴應。

回答

1

你必須自己創建一個鏈接產卵區域,因爲草圖不是網頁。一些代碼讓你開始:

ArrayList links = new ArrayList(); 

void setup() 
{ 
    size(window.innerWidth,window.innerHeight); 
    links.add(new Link("About...",30,height/2, 
        "Arial",16,"www.stackoverflow.com"); 
} 

void draw() 
{ 
    fill(0,0,0); 
    text("About",760,312); 
} 

class Link 
{ 
    String ltext,fontname,url = ""; 
    int x,y,tsize=0; 
    float tw=0; 
    Link(String t, int _x, int _y, String fn, int ts, String _url) { 
    ltext=t; x=_x; y=_y; 
    fontname = fn; tw=textWidth(ltext); tsize=ts; 
    url=_url; } 
    draw() { textFont(createFont(fontname,tsize)); fill(0); text(ltext, x, y); } 
    void mouseOver(int xy, int yo) { return x<xo && y-ts<yo && xo<x+tw && yo<y; } 
} 

void mousePressed() 
{ 
    for(Object o: links) 
    { 
    Link l = (Link) o; 
    if(l.mouseOver(mouseX,mouseY)) 
    { 
     // This is a plain javascript instruction - to do this 
     // properly, use a js interface instead, as described in 
     // http://processingjs.org/reference/articles/PomaxGuide#sketchtojs 
     location = l.url; 
    } 
    } 
} 
+0

我認爲問題是關於PJS,而不是正常的Processing。 – muffinista 2011-05-07 14:57:50

+0

這是,但這並沒有改變答案; Processing.js背後的想法是讓你編寫一個處理「草圖」並在網絡上運行它。我對這個答案進行了一次修正:我們可以使用Processing「link()」方法代替純js代碼「location = l.url」:「if(l.mouseOver(mouseX,mouseY)){link l.url);}「 – 2011-05-14 19:16:50

+0

你說的沒錯,我糾正了。 ArrayList向我扔了一個循環,但我現在看到它是允許的。 – muffinista 2011-05-14 22:36:54

2

你可以在PJS中創建鏈接,並且在PJS參考文獻中有一些例子。特別是,this page上有一些代碼,它有一個處理鼠標懸停和點擊的'alink'類。或者,您可以在致電mousePressed()時使用link method來處理當用戶點擊畫布時將其發送到某處。

編輯問:另外,只是要問,爲什麼不把PJS之外的鏈接放在首位呢?如果你將它們添加爲普通的HTML,你的生活將會變得更加簡單。