2014-06-09 2 views
0

나는 상쾌한 카운터를 만들기 위해 노력하고 있습니다 ... 예를 들어 - 마우스의 위치를 ​​(창 내에서) 사용합시다.

나는 모든 것을 지우고 다시 그려 보았지만 그릴 요소가 많으면 항상 버그가났다. 너무 빨리 ... 나는 지연을 증가했다면 상쾌 있기 때문에 깜박 것을 제외하고 ... 작동빠른 새로 고침 카운터는 어떻게 만듭니 까?

a = 1 
While(a = 1) 
    Program.Delay(10) 
    GraphicsWindow.Clear() 
    GraphicsWindow.DrawText(10,10,Mouse.MouseX) 
    GraphicsWindow.DrawText(10,20,Mouse.MouseY) 
EndWhile 

, 그것은 스톱워치 같은 일을하고, 특히 제대로 작동하지 않을 것입니다. 단지 하나의 큰 깜박이는 엉망을 만드는 ... 그리고 GraphicsWindow.clear()을 폐기

a = 1 
While(a = 1) 
    Program.Delay(10) 
    GraphicsWindow.Clear() 
    GraphicsWindow.DrawText(10,10,Mouse.MouseX) 
    GraphicsWindow.DrawText(10,20,Mouse.MouseY) 
    GraphicsWindow.DrawText(100,100,"Text") 
    GraphicsWindow.BrushColor = "#FF0000" 
    GraphicsWindow.DrawText(100,200,"Text") 
    GraphicsWindow.BrushColor = "#00FF00" 
    GraphicsWindow.DrawText(100,300,"Text") 
    GraphicsWindow.BrushColor = "#0000FF" 
    GraphicsWindow.DrawText(100,400,"Text") 
    GraphicsWindow.BrushColor = "#000FF0" 
    GraphicsWindow.DrawText(200,100,"Text") 
    GraphicsWindow.BrushColor = "#FF0000" 
    GraphicsWindow.DrawText(200,200,"Text") 
    GraphicsWindow.BrushColor = "#0FF000" 
    GraphicsWindow.DrawText(200,300,"Text") 
    GraphicsWindow.BrushColor = "Black" 
EndWhile 

옵션되지 않습니다 것은 같이 ... 그것도 명령의 많은 양의 일을 지원하지 수 있다는 것입니다 하나는이 같은 덮어 엉망 ...

a = 1 
While(a = 1) 
    Program.Delay(10) 
    GraphicsWindow.DrawText(10,10,Mouse.MouseX) 
    GraphicsWindow.DrawText(10,20,Mouse.MouseY) 
EndWhile 

또는 뭔가 만들기 때문에 : 그래서 http://i.stack.imgur.com/4sfSS.png


, 내 질문 :
,369을 백그라운드에서 그려진 많은 여분의 것들을 가질 수있는 깜박임없이 원활하게 새로 고칠 수있는 카운터를 만드는 방법이 있습니까? 창문 어디 엔가? 아래와 같은 것뿐만 아니라 움직이기도합니다. 링크의 혼란을 드려 죄송
http://i.stack.imgur.com/aZQ5T.png

: 사진을 게시하는 것만으로는 충분하지 평판 ...

답변

0

당신은 방금 삭제 한 요소를 다시 작성하여 깜박이는 효과를 줄일 수 있습니다. 예를 들어, GraphicsWindow.Clear()보다 빠른 직사각형을 그리고 "DrawText"직후에 DrawText를 사용하여 텍스트를 "삭제"합니다.

그러나 이렇게 새로 고침하면 항상 플래시가 생성됩니다. 더 나은 대안은 GW에 "changable"텍스트 요소 (레이블이라고 함)를 추가하는 방법이있는 Fremy의 FC 확장을 사용하는 것입니다. Fremy의 확장 기능에는 SB에 추가 기능이있어서 실제 프로그램을 만들 때 언어를 사용할 수 있습니다. 그것은 JQuery와 같은 JavaScript입니다. 내가 사용하는 것이 좋습니다, 당신이해야 할 일은 * .dll 라이브러리를 다운로드하는 것입니다. 이것에 대한 자세한 내용은 SB Wiki thread입니다.

구문 :

FCControls.AddLabel(Width [px], Height [px], Text) 

예 :

mylabel = FCControls.AddLabel(100, 30, "loading...") 
FCControls.Move(mylabel,10,10) 

While "true" 
... 
FCControls.SetText(mylabel,value) 
EndWhile 

이 어떤 점멸하지 텍스트를 새로 고칠 수 있습니다.

추가 힌트 : While "true"을 사용하면 무한 루프를 만들 수 있습니다.

+0

방금 ​​다른 질문이 있습니다. 확장을 설치했습니다. 그러나 실행 (또는 컴파일)을 시도하면 개체가 아니라고 말합니다 ... 명령으로 등록하더라도. – aytimothy

+0

SmallBasic의 어떤 버전이 있습니까? 이전 버전의 FC를 실행할 수 있습니다. 버전 0.9에서 SmallBasic은 자체 컨트롤을 추가 했으므로 FC는 FCControls로 이름을 변경해야했습니다. SB 1.0과 완전히 호환되는 내 라이브러리에 대한 링크를 제공 할 예정이며, 여러 가지 기능이 포함 된 확장 기능이 있지만 원하는 경우 FC.dll 및 FC.xml 만 복사하십시오. 디렉토리에있는 Lib/디렉토리로 이동합니다. 여기에 링크 : [link] (http://vitek.sikora.cz/files/SB1_extensions.zip) – ViteXikora

1

아주 좋은 방법은 아닙니다.

은 훨씬 간단 수행하고 확장하지 않고,이 시도 : 당신은 당신이 원하는 때마다 단순히 변수에 텍스트를 설정, 텍스트 모양을 추가

GraphicsWindow.Show() 
Text = Shapes.AddText("") 
Shapes.Move(Text,100,100) 

While 1 = 1 
Program.Delay(5) 
Shapes.SetText(Text,Clock.Second) 
EndWhile 

.

관련 문제