[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Panda3D - по русски » Panda3D » Для начинающих » Сообщения с интервалом
Сообщения с интервалом
drigromanlolДата: Среда, 08.05.2019, 17:44 | Сообщение # 1
Сержант
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 2
Статус: Offline
Ребят как сделать функцию в которой будут высвечины ряд сообщений с определенным промежутком времени?
К примеру в функцию поступает массив и в функции происходит показ этих сообщений. Но чтобы к примеру каждое сообщение длилась 2-3 секунды а то и больше. Или даже просто с фиксированым промежутком времени.

Хм.. еще не совсем разобрался как работает панда. Бьюсь над подобной функции уже месяц. Пробавал и через
taskMgr.add и другой метод который выставляет интервал по времени. Но как сделать чтобы после проигрывание одного сообщения шло следующие, ни как не могу сообразить.

Извиняюсь за глупые вопросы =(
 
serg-kkzДата: Среда, 08.05.2019, 18:45 | Сообщение # 2
Генерал-лейтенант
Группа: Модераторы
Сообщений: 715
Награды: 3
Репутация: 16
Статус: Offline
Хм, вроде ясно прежде сделать функцию по печатанию сообщений. Их разумеется где-то нужно разместить, я предлагаю использовать список как буфер порядка.

Код
from direct.showbase.ShowBase import ShowBase
from direct.task import Task

from panda3d.core import TextNode

class MyApp(ShowBase):

    def __init__(self):
        ShowBase.__init__(self)
        
        font = loader.loadFont('Xarrovv.ttf')
        
        taskMgr.doMethodLater(2, self.my_print, 'MyTaskName')

        self.list_message = ["Привет", "Ход игрока", "Нанесен урон", "Ошибка"]
        
        self.text = TextNode('Info')
        self.text.setFont(font)
        self.text.setAlign(TextNode.ACenter)
        self.text.setText("")
        
        textNodePath = aspect2d.attachNewNode(self.text)
        textNodePath.setScale(0.2)
        
        self.accept('space', self.add_message)

        self.n = 0
        
    def add_message(self):
        self.list_message.append("Пример "+str(self.n))
        self.n += 1

    def my_print(self, task):
    
        if len(self.list_message) > 0:
        
            self.text.setText(self.list_message[0])
            del self.list_message[0]
            # Ниже можно реализовать эффект исчезания и так далее.
            
        else:
            self.text.setText("Сообщений нет")
        
        return task.again

app = MyApp()
app.run()


Теперь если программно добавить текст нажав на пробел в список self.list_message добавиться текст с порядковым номером, то функция его выведет.
Add. Обновил код


ООП  -  

Сообщение отредактировал serg-kkz - Среда, 08.05.2019, 19:04
 
drigromanlolДата: Среда, 08.05.2019, 18:56 | Сообщение # 3
Сержант
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 2
Статус: Offline
Офигеть... а я все пытался сделать массовые задачи которые после отработки заканчивали свое существование. Но получалось так что они сразу все срабатывали как только проходило время. А тут оказалось все так просто... хм... как же освоить панду =_=
Спасибо serg-kkz =)


Сообщение отредактировал drigromanlol - Среда, 08.05.2019, 18:57
 
serg-kkzДата: Среда, 08.05.2019, 18:59 | Сообщение # 4
Генерал-лейтенант
Группа: Модераторы
Сообщений: 715
Награды: 3
Репутация: 16
Статус: Offline
Заметь питон нужно тоже изучать, списки не часть Панды.

ООП  -  
 
drigromanlolДата: Среда, 08.05.2019, 19:02 | Сообщение # 5
Сержант
Группа: Пользователи
Сообщений: 21
Награды: 0
Репутация: 2
Статус: Offline
Питон конечно я тож изучаю. Он схож чем то с Руби. А на руби уже 2 года как работаю. Конечно пробовал через списки провернуть все это. После обработки индекс последнего или первого звена бы удалялся со списка. Застопорился в том моменте когда не мог сообразить как сделать задержку во времени. И так и этак. Короче лапшу там нагородил а результата 0
 
Форум Panda3D - по русски » Panda3D » Для начинающих » Сообщения с интервалом
  • Страница 1 из 1
  • 1
Поиск: