2014-03-01 49 views
0

我從我找到的教程中拉出了下面的示例,因爲它包含了我正在查找的大部分基本功能。我的麻煩是這樣的:我希望標題[]數組中的每個字符串都會移動到窗口上(就像它已經做的那樣),然後在退出之前立即停止。我不希望消失,而是希望字符串保持靜態,因爲陣列中的下一個字符在...之前也會最終停止。換句話說,我希望文字看起來好像堆疊在一起,因爲更多的字符串進入窗口。從draw()函數中創建文本靜態

下面是代碼:

String[] headlines = { 
    "Processing downloads break downloading record.", 
    "New study shows computer programming lowers cholesterol.", 
}; 

PFont f; 
float x; 
int index = 0; 

void setup() { 
    size(400, 200); 
    f = createFont("Arial", 16, true); 

    x = width; 
} 

void draw() { 

    background(255); 
    fill(0); 

    textFont(f, 16); 
    textAlign (LEFT); 


    text(headlines[index], x, 180); 

    x = x - 5.5; 

    float w = textWidth(headlines[index]); 


    if (x < 2) { 
    x = width; 
    index = (index + 1) % headlines.length; 
    } 
} 
+0

你可能要添加一個標籤,以顯示這是寫在...語言 – arkascha

+0

嘗試限制的x值的變化,即'如果(X> 100)X = X - 5.5 ;或者類似的東西。 –

回答

0

正如我理解你的問題,你要寫到屏幕上的文字堆積起來的,這意味着它們不是每次重繪draw()函數是然。

將draw()函數從draw()函數移動到setup()函數。背景()將重繪背景,並清除draw()的最後一次運行中的文本。如果你想在draw()的最後一輪中保持畫布的畫布,只需將background()的調用移動到setup()函數即可。

Processing background() function documentation

+0

我需要將background()函數放在draw()中,否則文本將無法在窗口中移動。我只希望文本在達到窗口邊緣的停止點後開始'堆積'.....是可能的嗎? –

+0

好的,所以如果我已經正確理解了你的意思:一旦程序到達最後,你想要顯示文本已經低谷的所有迭代(文本堆積?)?爲重繪背景創建一個標誌,將background()移動到該標誌的if分支上,然後一旦到達最後,將標誌設置爲false?這會起作用嗎? – olovholm