|
13.07.2011, 21:47
|
#1
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Удалить объект
Нужно удалить объект, делаю так:
For Gr = EachIn grass.GrassList
If movx=Gr.x And movy=Gr.y
Gr = Null
End If
Next
Не удаляется. Что я делаю не так? Заранее благодарен.
|
(Offline)
|
|
13.07.2011, 21:53
|
#2
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Удалить объект
Пробовал так:
For Gr = EachIn grass.GrassList
If movx=Gr.x And movy=Gr.y
Gr = Null
Delete Gr
End If
Next
Ругается "Expecting expression but encountered Delete"
|
(Offline)
|
|
13.07.2011, 21:56
|
#3
|
Blitz's Shame !!
Регистрация: 31.03.2007
Сообщений: 3,639
Написано 832 полезных сообщений (для 2,013 пользователей)
|
Ответ: Удалить объект
так попробуй:
For Gr = EachIn grass.GrassList
If movx=Gr.x And movy=Gr.y
Delete Gr
End If
Next
|
(Offline)
|
|
13.07.2011, 22:01
|
#4
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Удалить объект
тоже самое
|
(Offline)
|
|
13.07.2011, 22:11
|
#5
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Удалить объект
я хз как в блитзмаксе, но уменя была похожая проблема в яве
попробуй вместо foreach - for с обновлением размера листа на каждом шаге (если так конечно можно, я хз)))
|
(Offline)
|
|
13.07.2011, 22:18
|
#6
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Удалить объект
Если я не ошибаюсь For ... EachIn и есть аналог foreach в Java, в общем Blitzmax не понимает foreach
|
(Offline)
|
|
13.07.2011, 22:22
|
#7
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Удалить объект
ну так я и говорю, попробуй вместо For ... EachIn что то типа (синтаксис не знаю)
For i = 0 to grass.GrassList.size()
If movx=Gr.x And movy=Gr.y
Delete Gr
End If
Next
|
|
(Offline)
|
|
13.07.2011, 22:28
|
#8
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Удалить объект
Лол.
Сообщение от xmarat
Нужно удалить объект, делаю так:
For Gr = EachIn grass.GrassList
If movx=Gr.x And movy=Gr.y
Gr = Null
End If
Next
Не удаляется. Что я делаю не так? Заранее благодарен.
|
Вот так правильно:
For Gr = EachIn grass.GrassList
If movx=Gr.x And movy=Gr.y
grass.GrassList.Remove(Gr)
End If
Next
GCollect()
ты переменной присваиваешь значение нуля, а объект никак не трогаешь.
юзай delete))
|
Извините, конечно, но убейтесь об стену - в BlitzMax нет Delete.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Nerd за это полезное сообщение:
|
|
13.07.2011, 22:44
|
#9
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Удалить объект
Спасибо за ответы. Все получилось.
|
(Offline)
|
|
13.07.2011, 22:56
|
#10
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Удалить объект
Извините, конечно, но убейтесь об стену - в BlitzMax нет Delete.
|
а. не заметил, что тема про блицмакс. ок.
|
(Offline)
|
|
14.07.2011, 22:19
|
#11
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Удалить объект
Возникла проблема. Если сделать sortlist, удаляется другой объект вместо нужного. Пробовал с помощью print выяснить имя удаляемого объекта, пишет что grass, а на деле удаляется сам игрок. Если убрать sortlist все нормально, удаляется grass. Но без sortlist никак не обойтись. удаление сделал методом внутри типа Grass, вот так:
Method destroy() obj_list.remove(Self) GCCollect() End Method
Типы Player и Grass наследуются от типа Obj. В чем может быть проблема?
|
(Offline)
|
|
14.07.2011, 22:22
|
#12
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Удалить объект
Убери игрока из списка травы, например. (Тем-более если он у тебя один, вообще лист ненужен.)
А так ты в нерпавильном месте вызываешь метод удаления видимо.
|
(Offline)
|
|
14.07.2011, 22:24
|
#13
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Удалить объект
Суть в том, что мне нужно, чтоб игрок был в списке obj_list, это дает мне возможность управлять глубиной всех объектов. Подробности здесь
-----------------
Забыл добавить: все объекты в списке obj_list
|
(Offline)
|
|
14.07.2011, 22:34
|
#14
|
злобный флудер
Регистрация: 10.07.2007
Сообщений: 2,585
Написано 789 полезных сообщений (для 1,476 пользователей)
|
Ответ: Удалить объект
Ну так а где у тебя метод вызывается ?
И метод удаления вынеси из типа травы. Почему он у тебя там если относится ко всем объектам ?
|
(Offline)
|
|
14.07.2011, 22:49
|
#15
|
Нуждающийся
Регистрация: 11.07.2011
Сообщений: 64
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Удалить объект
Вот кратко:
Type obj Field o_type:String
...
Method Update() Abstract Method Destroy() Abstract End Type
Type Grass Extends obj
Function Create() Local NewGrass:Grass = New Grass NewGrass.o_type="Grass" End Function
... Method destroy() obj_list.remove(Self) GCCollect() End Method
...
End Type
Type Player Extends obj
...
Method Update() ... For A = EachIn obj_list ... If (A.o_type="Grass") Then A.destroy() ... Next ... End Method
...
End Type
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:36.
|