Показано с 1 по 10 из 95

Тема: Свободный практикум

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    По умолчанию

    Да, и впрямь что-то четвертое задание затянулось. Мой вариант решения:

    Спойлер Не отписавшимся участникам не смотреть!:

    Спойлер Вы уверены, что хотите заглянуть под спойлер?:

    Спойлер А если подумать?:

    Спойлер А если хорошо подумать?!:

    Спойлер Ну, ладно, щелкай...:
    Код:
    # Вставляем перед Main
    begin
      
      # Константа, содержащая количество кадров
      @FramesCount = 8
      # Задаем новую частоту обновления экрана
      # (первый вариант управления скоростью анимации)
      # Graphics.frame_rate = 10
      # Создаем изображение, в пути указываем свой путь, не забывая экранировать слэши
      @bitmap = Bitmap.new("D:\\Games\\RPGMakerXP\\Projects\\Scripts\\Source\\framerate.PNG")
      # Получаем размеры кадра
      @frameWidth = @bitmap.width / @FramesCount
      @frameHeight = @bitmap.height
      # Определяем положение экрана
      # Здесь должна была быть WinAPI функция для определения размеров экрана,
      # но это уже тема другого задания
      @spriteX = 320 - @frameWidth / 2
      @spriteY = 240 - @frameHeight / 2
      # Создаем область просмотра
      @viewport = Viewport.new(@spriteX, @spriteY, @frameWidth, @frameHeight)
      # Создаем новый спрайт с указанием области просмотра
      @sprite = Sprite.new(@viewport)
      # Присваиваем изображение спрайту
      @sprite.bitmap = @bitmap 
      # Запускаем бесконечный цикл (вроде, был do, но я давно не писал)
      # Это вместо использования встроенных циклов сцены
      while (true)
        # Цикл от 0-го кадра до последнего
        for i in 0...@FramesCount
          # Задаем смещение по оси X для области просмотра,
          # равное номеру кадра, умноженное на ширину кадра
          @sprite.viewport.ox = @frameWidth * i
          # Обновляем экран
          Graphics.update
          # Ждем 0.1 секунды
          # (второй вариант управления скоростью анимации)
          sleep(0.1)
        end
      end
      
    end


    Я тут, кстати, немного опростоволосился (ну, давно не писал, давно ) и оба представленных способа управления скоростью анимации использовать в настоящих проектах не рекомендуется. Вместо этого используйте метод delay, реализованный в скрипте Space постом выше.

    ---

    Добавлено после морального шока: нет, не используйте метод Space, он чешет правой ногой левое ухо.
    Спойлер Вы действительно хотите узнать страшную тайну?:

    Space, тебе не кажется, что, если нужно просто посчитать кадры, то для этого вполне подойдет обычный цикл?
    Код:
    def delay(frames)
        for i in 0...frames
            Graphics.update
        end
    end
    Зачем юзать страшный Graphics.frame_count?! Интерпретатору легче сосчитать циферки от 0 до 20, чем от 95195121218 до 95195121238
    Последний раз редактировалось Equilibrium Keeper; 07.07.2011 в 22:15.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Свободный практикум