bei Verlassen des Fensters bleibt der Inhalt stehen
Verfasst: 21.10.2015 09:22
Hallo,
zZt. versuche ich mich an einem Demo was ein Logo und ein Starfield und Scrollschrift anzeigt. Läuft alles gut.
Nun habe ich festgestellt, wenn ich das kleine Programm laufen habe und den Fokus nicht mehr darauf habe, sprich, in ein anderes Windows Fenster klicke oder das Programm selber mit der Maus verschiebe, alles stehen bleibt und erst normal weiter läuft wenn der Fokus wieder auf dem Programm liegt.
Wie kann ich so etwas umgehen?
Ich muss hier die MP3d Lib und die FX Lib benutzen (Code ist also nicht ausführbar mit Copy & Paste aber vielleicht kann man in meinem Code sehen was den Fehler verursacht? Liegt es am Event = WaitWindowEvent(3) ?
Danke
Gruß
zZt. versuche ich mich an einem Demo was ein Logo und ein Starfield und Scrollschrift anzeigt. Läuft alles gut.
Nun habe ich festgestellt, wenn ich das kleine Programm laufen habe und den Fokus nicht mehr darauf habe, sprich, in ein anderes Windows Fenster klicke oder das Programm selber mit der Maus verschiebe, alles stehen bleibt und erst normal weiter läuft wenn der Fokus wieder auf dem Programm liegt.
Wie kann ich so etwas umgehen?
Ich muss hier die MP3d Lib und die FX Lib benutzen (Code ist also nicht ausführbar mit Copy & Paste aber vielleicht kann man in meinem Code sehen was den Fehler verursacht? Liegt es am Event = WaitWindowEvent(3) ?
Code: Alles auswählen
EP_InitFXLib() ; MUST BE CALLED FIRST !!
UsePNGImageDecoder()
InitSprite()
Enumeration
#Window_0 ; MAIN WINDOW
#exit_button
EndEnumeration
DataSection
;LOGO
MyData1:
IncludeBinary "gfx\uret_new.png"
EndOfMyData1:
;Font
font:
IncludeBinary "gfx\pix16.png" ; A 16x16 PNG FONT
fontnd:
;Song
Song:
IncludeBinary "sound\phaser.v2m" ; CALL A NICE V2M SOUND
;EXIT BUTTON
ExitButton1:
IncludeBinary "gfx\exx.png"
EndOfExitButton1:
;FRAME SHADOW
FrameShadow:
IncludeBinary "gfx\frame_shadow.png"
EndFrameShadow:
EndDataSection
OpenWindow(#Window_0, 732, 301, 540, 540, "", #PB_Window_ScreenCentered | #PB_Window_BorderLess)
SetWindowPos_(WindowID(0),#HWND_TOPMOST,0,0,0,0,#SWP_NOMOVE|#SWP_NOSIZE) ; SET WINDOW ALWAYS ON TOP
MP_ScreenToHandle(WindowID(0)) ; HANDLE 3D SCREEN
UseGadgetList(#Window_0)
;-DEFINITION EXIT BUTTON
Define ExitButton1 = CatchImage(#PB_Any,?ExitButton1, ?EndOfExitButton1 - ?ExitButton1)
br = ImageWidth(ExitButton1)
hh = ImageHeight(ExitButton1)
CanvasGadget(#exit_button, 500, 2, br, hh)
SetGadgetAttribute(#exit_button, #PB_Canvas_Image, ImageID(ExitButton1))
;-LOAD AND PLAY V2M Sound
MP_CatchV2M(?Song) ; LOAD SONG
MP_PlayV2M(0) ; 0 START SOUND FROM THE BEGINNING
IsPlaying=1 ; CHECK IF SONG IS PLAYING
;-STARFIELD
EP_Init2DStars(50,7,0.3,0,18,540,250)
EP_2DStarsColor(2, RGB( 23, 50, 100)) ; STARS COLOR
;-Logo,Frame & EXIT BUTTON
Sprite_1 = MP_CatchSprite(?MyData1, ?EndOfMyData1 - ?MyData1) ; GRAB LOGO FROM MEM
Sprite_2 = MP_CatchSprite(?ExitButton1, ?EndOfExitButton1 - ?ExitButton1) ; GRAB EXITBUTTON FROM MEM
Sprite_3 = MP_CatchSprite(?FrameShadow, ?EndFrameShadow - ?FrameShadow) ; LOAD FRAME & SHADOW GFX FROM MEM
;-3D QUBE
camera=MP_CreateCamera() ; CREATE CAM
light=MP_CreateLight(1) ; MAKE LIGHT
Mesh1=MP_CreateCube() ; CREATE QUBE
MP_PositionEntity (Mesh1,0,1.2,6) ; POSITION QUBE, last number makes the size and Z Index of a qube
MP_Wireframe(1) ; QUBE AS WIREFRAME. IF THIS LINE IS DISABLED: QUBE HAVE AN TEXTURE
;-SHOW a NORMAL SYSTEM Font Text
font2 = MP_LoadFont ("Microsoft Sans Serif",12,0,0);"Fontname",SIZE,bold,italic
;DEFINE SINUS FONT
EP_CatchFont16(Sprite_4,?font, ?fontnd)
EP_SetScrollText(Sprite_4, " i am a nice scrolltext and represent sinus moving up and down hit [ESC] To exit ")
EP_Create16Scroll(0, 0, 0,130, 0,560)
EP_SetSinScroll16(0, 5, 0 , 30, 10) ;DEFINE BEHAVIOR BY SINUS
Repeat
;- LOOP FUNCTION V2M SOUND
If MP_IsPlayingV2M()
IsPlaying=1 ;CHECK IF SONG IS PLAYING
Else
EndOfTrackReached=1 ;IF SONG REACHED ITS END
;RESTART PLAYBACK
MP_PlayV2M(0) ;0 STARTs SONG At THE BEGINNING
EndIf
MP_AmbientSetLight ($FF090006); SET BACKGROUND COLOR OF THE WINDOW
MP_DrawSprite(Sprite_1, 19, 30) ; SHOW LOGO ON SCREEN
MP_SpriteSetZ(Sprite_1, 9) ; 9 IS Z-INDEX FOR LOGO
MP_DrawSprite(Sprite_2, 500, 2) ; SHOW EXIT BUTTON
MP_SpriteSetZ(Sprite_2, 0) ; 0 = Z INDEX
MP_DrawSprite(Sprite_3, 0, 0) ; SHOW FRAME
MP_SpriteSetZ(Sprite_3, 0) ; 0 = Z INDEX
;DRAW NORMAL TEXT ON SCREEN
MP_DrawText (340,220,"Today we have the current Date in 2015",font2,$77777777,0,0) ; 0,0 ---> 2nd VALUE CAN SPIN TEXT
MP_TextSetZ (0) ; SET TEXT ON Z INDEX FRONT
;3d QUBE
MP_TurnEntity (Mesh1,1.3,1.3,1.3) ; SPIN QUBE
;SCROLL TEXT NOW
EP_Move16Scroll(0); SCROLL TEXT NOW
; DRAW ROTATING STARFIELD
EP_2DStarsDraw() ; DRAW STARFIELD
EP_2DStarsDegree(b.f)
b.f - 0.5; DEGREE OF STARS and ROTATE ALL
MP_RenderWorld() ; CREATE WORLD
MP_Flip () ; DO IT
Event = WaitWindowEvent(3)
eventtype = EventType()
;////////////////////////////////////////
;-EXIT BUTTON FUNCTION
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #exit_button
Select EventType()
Case #PB_EventType_LeftButtonDown
MP_StopV2M(0) ;STOP MUSIC
MP_FreeV2M() ;FREE PLAYER
EP_2DStarsClear()
End
EndSelect
EndSelect
EndSelect
;////////////////////////////////////////
;-ESCAPE BUTTON FUNCTION
If MP_KeyDown(#PB_Key_Escape)
MP_Close()
EP_2DStarsClear()
MP_StopV2M(0) ;STOP MUSIC
MP_FreeV2M() ;GIVE PLAYER FREE
End
EndIf
;////////////////////////////////////////
;-MOVE WINDOW WITH MOUSE WHEN LEFT CLICK ON DEMO
SendMessage_(WindowID(0), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
;////////////////////////////////////////
ForEver
Gruß