filo95 ha scritto:ho un problema: ci sono più oggetti
oggetto a in draw ha
background_color = c_black
draw_set_blend_mode(bm_add)
draw_sprite(spr,x,y)
draw_set_blend_mode(bm_normal)
e oggetto b
background_color = c_white
screen_refresh()
screen_redraw
e fin quì tutto ok, però se ci sono più oggetti a nella room e voglio che l'oggetto b esegua quell'azione solo quando tutti gli altri hanno eseguito il blocco draw devo usare una struttura dati?
Non capisco a dire il vero perchè hai messo screen_redraw e screen_refresh: non ci pensa già Game Maker a disegnare gli oggetti? Quei comandi credo che vadano usati solo quando si vuole bloccare il normale ciclo di Game Maker (ad esempio con strutture while).
filo95 ha scritto:il problema viene perchè vorrei usare tre tempi (per alleggerire la memoria con meno calcoli) tipo se ci sono cinquanta istanze, ogniuna che cambia il background color ogni volta... mi sembra uno spreco di cpu
Dipende da come Game Maker gestisce il background_color. Comunque, anche se non ne sono certo, credo che ci sia spreco di CPU, quindi è realmente preferibile evitare di cambiare troppe volte background_color.
filo95 ha scritto:background_color = c_black
_____________________________
draw_set_blend_mode(bm_add)
draw_sprite(spr,x,y)
draw_set_blend_mode(bm_normal)
_____________________________
background_color = c_white
screen_refresh()
screen_redraw
Per risolvere il problema, basta spezzare il codice di b in due eventi diversi:
EVENTO STEP - background_color = c_black
_____________________________
EVENTO DRAW - draw_set_blend_mode(bm_add)
draw_sprite(spr,x,y)
draw_set_blend_mode(bm_normal)
_____________________________
EVENTO DRAW - background_color = c_white
screen_refresh()
screen_redraw
Gli eventi Step infatti si verificano prima degli eventi Draw.