Как создать окно в smalltalk

Я пытаюсь сделать так, чтобы появилось окно, но я продолжаю получать сообщение об ошибке, не понятной. Фрагмент:

Window new
  label: 'Hello';
  open

person Bartlomiej Lewandowski    schedule 08.11.2012    source источник
comment
какой Smalltalk вы используете?   -  person Bernd Elkemann    schedule 08.11.2012
comment
Я использую Cincom Smalltalk VisualWorks® версии 7.9.   -  person Bartlomiej Lewandowski    schedule 08.11.2012


Ответы (2)


Хорошо, для такой игры вы хотите использовать настраиваемый элемент управления. Вы начинаете с создания подкласса View для своей игры и переопределяете метод displayOn: для отображения представления. Вы можете добавить представление на холст UIPainter с помощью ViewHolder. Задайте для свойства View: имя метода, который возвращает ваше пользовательское представление.

Чтобы перехватывать щелчки мыши, вам понадобится собственный контроллер для вашего представления. Вы создадите подкласс Controller или один из его подклассов, чтобы создать Controller. Метод с именем defaultControllerClass в представлении возвращает имя класса контроллера. В контроллере можно перехватывать события мыши.

Я предлагаю вам загрузить пример игры, чтобы начать. Откройте Диспетчер посылок и выберите Игрушки из списка. Там вы должны увидеть SpiderSolitaire. Это игра, написанная для VisualWorks, которая отображает пользовательское представление, выполняет простую анимацию в этом представлении и перехватывает события мыши. Это должно послужить хорошим примером для использования.

person David Buck    schedule 09.11.2012
comment
я получаю сообщение об ошибке «путь не найден», мне нужно загрузить какой-то другой пакет? - person Bartlomiej Lewandowski; 10.11.2012
comment
Что вы делали, когда вы получили ошибку? Загрузка игры SpiderSolitaire или какой-то другой шаг? - person David Buck; 11.11.2012
comment
проблема, решена, мне пришлось скачать пакет из респ. Спасибо за помощь :) - person Bartlomiej Lewandowski; 11.11.2012

Вы можете использовать это:

ScheduledWindow new
    label: 'Hello';
    open

Или открыть крупнее:

ScheduledWindow new
    label: 'Hello';
    openIn: (20@20 extent: 300@300)

Я подозреваю, однако, что это не то, что вы действительно хотите делать, так как с окном, построенным таким образом, сложно работать. Можете ли вы объяснить больше о том, что вы хотите сделать?

person David Buck    schedule 08.11.2012
comment
Я хочу создать небольшую игру, например, игру с рефлекторной стрельбой. Вы должны нажать на спрайт достаточно быстро, чтобы получить очки. - person Bartlomiej Lewandowski; 09.11.2012