Skocz do zawartości

Zablokowane Wiele instance'ów tego samego obiektu


Shaman

Rekomendowane odpowiedzi

Nie mogę rozkminić jak zrobić następującą rzecz:

 

1. Mam w roomie 10 instance'ów tego samego obiektu. Stworzyłem obiekt Drawer. Co mam zrobić żeby Drawer wyświetlał nad każdym instance'm jakiś jednakowy tekst? .... draw_text(?,?,"tekst")

 

2. Mam w roomie 10 instance'ów tego samego obiektu. Każdy instance ma variable health, każdy o własnej wartości. Stworzyłem obiekt Drawer. Co mam zrobić żeby Drawer wyświetlał nad każdym instance'm wartość jego własnego health'a? .... draw_text(?,?,?)

 

Czekam na jakiekolwiek odpowiedzi ... :thumbsup:

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz odwołać się do każdego obiektu przez self albo id. Więc:

Draw

with( obiekt )
{
    draw_text( id.x,id.y,string(id.zmienna));
}

Nie wiem czy zadziała :)

 

EDIT

Działa! ;) Jaklub, nie poddawaj się. :3

Odnośnik do komentarza
Udostępnij na innych stronach

Użyj idów.

 

idy obiektów (identyfikatory) można można zobaczyć w edytorze roomów.

 

Jeśli te obiekty są tworzone w czasie gry, ich id można pzypisać do globali.

 

Np.

W Create obiektu objętego Drawerem

if instance_number(dany obiekt)=1
{
global.ida[0]=self.id
break
}
else
if instance_number(dany obiekt)=2
{
global.ida[1]=self.id
break
}
else
... (i tak dalej)

 

A w Drawer - draw:

draw_text(global.ida[0].x,global.ida[0].y,global.ida[0].health)
draw_text(global.ida[1].x,global.ida[1].y,global.ida[1].health)

 

PS. Do tej metody zalecam zaznaczyć w Global game settings > Errors > Treat unitialized variables as 0

Może to spowodować trochę bugów, ale z nimi sobie poradzisz.

 

EDIT: Tymon mnie wyprzedził.

Odnośnik do komentarza
Udostępnij na innych stronach

Jaklub:

 

Twój sposób może i byłby skuteczny, jednak zdaje się by bardzo zawiły i niepraktyczny. Jeśli miałbym nie 10, a na przykład 200 takich instance'ów to wiązałoby się to z tworzeniem ogromnej liczby zmiennych, więc na pewno jest pamięciożerne. Mimo to, wielkie dzięki że odpisałeś.

 

Tymon:

 

Hehe, powiem szczerze, że wystarczyłoby mi tylko uświadomienie mnie o istnieniu czegoś takiego jak with. W helpie wszystko odnośnie mojego problemu jest wyjaśnione, tylko po prostu tego nie znalazłem:

 

 

With constructions

 

As indicated before, it is possible to read and change the value of variables in other instances. But in a number of cases you want to do a lot more with other instances. For example, imagine that you want to move all balls 8 pixels down. You might think that this is achieved by the following piece of code

 

ball.y = ball.y + 8;

But this is not correct. The right side of the assignment gets the value of the y-coordinate of the first ball and adds 8 to it. Next this new value is set as y-coordinate of all balls. So the result is that all balls get the same y-coordinate. The statement

 

ball.y += 8;

will have exactly the same effect because it is simply an abbreviation of the first statement. So how do we achieve this? For this purpose there is the with statement. Its global form is

 

 

with (<expression>) <statement>

<expression> indicates one or more instances. For this you can use an instance id, the name of an object (to indicate all instances of this object) or one of the special objects (all, self, other, noone). <statement> is now executed for each of the indicated instances, as if that instance is the current (self) instance. So, to move all balls 8 pixels down, you can type.

with (ball) y += 8;

 

 

Tak więc, wielkie dzięki Tymon :thumbsup: :thumbsup: :thumbsup:

Odnośnik do komentarza
Udostępnij na innych stronach

Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...