Хорошо! Хорошо!:  0
Плохо! Плохо!:  0
Показано с 1 по 6 из 6

Тема: Double Window

  1. #1

    По умолчанию Double Window

    EKLib(Addons) - Double Window v.1.0b

    Предисловие:
    От мелких классовых изменений, плавно переходим к созданию классов... Баги ловились, ловятся, но имеют все шансы ловиться и в будущем. Найдете - высылайте. Грохну. Вот...

    Описание:
    Данный класс представляет собой два совмещенных окна, позволяющих сделать видимость произвольного отступа содержимого окна от рамки, вместо стандартных 16.

    В следующих версиях планирую:
    • Грохнуть все, что вы нароете
    • Реализовать все, что вы предложите


    Установка:
    • В редакторе скриптов создайте чистую страницу над "Main" и скопируйте туда данный скрипт.


    Требования:

    Совместимость с другими версиями библиотеки не гарантируется!

    Скрипт:
    Код:
    #==============================================================================
    # EKLib(Addons) - Double Window v.1.0b
    #------------------------------------------------------------------------------
    # Created by: Equilibrium Keeper [equilibriumkeeper@inbox.com]
    # Created on: 05.01.2009 22:44:39
    # Отдельное спасибо: insider, Snaiper, Рольф, Dr. Nick To, Steck, BuBlicK
    #          А так же: rpgmaker.sk6.ru, rpg-maker.info, gdsa.rpgmaker.ru,
    #                    otvety.google.ru
    # Были заимствованы идеия из скриптов следующих авторов: insider, ripp3r
    #==============================================================================
    # Описание: Данный класс представляет собой два совмещенных окна, позволяющих сделать
    # видимость произвольного отступа содержимого окна от рамки, вместо
    # стандартных 16.
    #------------------------------------------------------------------------------
    # Особенности:
    #   1. После изменения любого параметра окна, необходимо обязательно
    #      вызвать метод "update"
    #   2. При задании параметра contents_opacity, не использовать сокращенные методы,
    #      такие как: +=, -=, *=, /=, %=
    #------------------------------------------------------------------------------
    # Установка: В редакторе скриптов создайте чистую страницу над "Main" и
    #            скопируйте туда данный скрипт.
    #------------------------------------------------------------------------------
    # Требования: Наличие библиотеки EK Lib v2.1
    #             Совместимость с другими версиями библиотеки не гарантируется!
    #------------------------------------------------------------------------------
    # Примечание: В описании скриптов используются следующие сокращения:
    # [](array) - массив; i(integer) - целое число; f(float) - дробное число
    # b(boolean) - true/false; s(string) - строка
    # В круглых () скобках указаны рекомедуемые значения параметров
    # В фигурных {} скобках указаны допустимые значения параметров
    #==============================================================================
    class Window_Double < Window_Base
      #----------------------------------------------------------------------------
      # Инициализация нового окна
      # x       :integer - координата X окна
      # y       :integer - координата Y окна
      # width   :integer - ширина окна
      # height  :integer - высота окна
      # x_space :integer (4~16) - отступ от рамки по горизонтали
      # y_space :integer (0~16) - отступ от рамки по вертикали
      #----------------------------------------------------------------------------
      attr_reader :x_space
      attr_reader :y_space
      #----------------------------------------------------------------------------
      def initialize(x, y, width, height, x_space = 8, y_space = 4)
        super(x, y, width, height)
        @x_space = x_space
        @y_space = y_space
        x2 = x - (16 - x_space)
        y2 = y - (16 - y_space)
        width2 = width + 32 - x_space
        height2 = height + 32 - y_space
        self.back_opacity = 0
        @window_invisible = Window_Base.new(x2, y2, width2, height2)    
        @window_invisible.contents = Bitmap.new(self.width - x_space * 2, self.height - y_space * 2)
        @window_invisible.opacity = 0
        @window_invisible.active = false
      end
      #----------------------------------------------------------------------------
      # Уничтожение окна
      #----------------------------------------------------------------------------
      def dispose
        @window_invisible.dispose
        super
      end
      #----------------------------------------------------------------------------
      # Обновление окна
      #----------------------------------------------------------------------------
      def update
        if self.x - @window_invisible.x != 16 - @x_space
          @window_invisible.x = self.x + @x_space - 16
          resize = true
        end
        if self.y - @window_invisible.y != 16 - @y_space
          @window_invisible.y = self.y + @y_space - 16
          resize = true
        end
        if @window_invisible.width - self.width != 32 - @x_space
          @window_invisible.width = self.width - @x_space * 2 + 32
          @window_invisible
          resize = true
        end
        if @window_invisible.height - self.height != 32 - @y_space
          @window_invisible.height = self.height - @y_space * 2 + 32
          resize = true
        end
        if resize
          @window_invisible.contents = @window_invisible.contents.resize(
                            self.width - @x_space * 2, self.height - @y_space * 2,
                            false, nil)
          resize = false
        end
        @window_invisible.update
        super
      end
      #----------------------------------------------------------------------------
      # Метод устанавливает новую шкурку для окна
      # bitmap :bitmap - рисунок, который будет использован в качестве "шкурки"
      #----------------------------------------------------------------------------
      def windowskin=(bitmap)
        @window_invisible.windowskin = bitmap unless @window_invisible == nil || @window_invisible.disposed?
        super(bitmap)
      end
      #----------------------------------------------------------------------------
      # Метод возвращает рисунок (bitmap), используемый, как содержимое окна
      #----------------------------------------------------------------------------
      def contents
        return @window_invisible.contents unless @window_invisible == nil || @window_invisible.disposed?
      end
      #----------------------------------------------------------------------------
      # Метод устанавливает новый рисунок, используемый, как содержимое окна
      # bitmap :bitmap - рисунок
      #----------------------------------------------------------------------------
      def contents=(bitmap)
        @window_invisible.contents = bitmap unless @window_invisible == nil || @window_invisible.disposed?
      end
      #----------------------------------------------------------------------------
      # Метод устанавливает новое значение для параметра "видимости" окна
      # boolean :boolean - флаг "видимости"; если true - окно видимо
      #----------------------------------------------------------------------------
      def visible=(boolean)
        @window_invisible.visible = boolean unless @window_invisible == nil || @window_invisible.disposed?
        super(boolean)
      end
      #----------------------------------------------------------------------------
      # Метод возвращает true если обои растягиваются; false - если нет.
      #----------------------------------------------------------------------------
      def stretch
        return @window_invisible.stretch unless @window_invisible == nil || @window_invisible.disposed?
      end
      #----------------------------------------------------------------------------
      # Метод устанавливает новое значение параметра отображения обоев
      # boolean :boolean - флаг отображения обоев; если true - растягиваются; false - нет
      #----------------------------------------------------------------------------
      def stretch=(boolean)
        @window_invisible.stretch = boolean unless @window_invisible == nil || @window_invisible.disposed?
      end
      #----------------------------------------------------------------------------
      # Метод возвращает значение непрозрачности содержимого окна
      #----------------------------------------------------------------------------
      def contents_opacity
        return @window_invisible.contents_opacity unless @window_invisible == nil || @window_invisible.disposed?
      end
      #----------------------------------------------------------------------------
      # Метод устанавливает новое значение непрозрачности содержимого окна
      # int :integer - непрозрачность
      # Примечание: не использовать сокращенные методы, такие как: +=, -=, *=, /=, %=
      #----------------------------------------------------------------------------
      def contents_opacity=(int)
        @window_invisible.contents_opacity = int unless @window_invisible == nil || @window_invisible.disposed?
      end
      #----------------------------------------------------------------------------  
    end
    #==============================================================================
    Последний раз редактировалось Equilibrium Keeper; 19.06.2011 в 20:23.

  2. #2
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Я не понял для чего скрипт


  3. #3
    Создатель Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    10,081
    Записей в дневнике
    2
    Репутация: 108 Добавить или отнять репутацию

    По умолчанию

    Читай внимательно, это адон, без основной библиотеки не идет.

  4. #4
    Маститый Аватар для Andrew
    Информация о пользователе
    Регистрация
    08.02.2011
    Адрес
    Беларусь, Витебск
    Сообщений
    1,049
    Записей в дневнике
    3
    Репутация: 30 Добавить или отнять репутацию

    По умолчанию

    Он какие то окна раздвигает или что?
    Я не понимаю смысл скрипта.
    Что он делает?


  5. #5
    Маститый Аватар для Рыб
    Информация о пользователе
    Регистрация
    12.11.2008
    Адрес
    [ДАННЫЕ УДАЛЕНЫ]
    Сообщений
    1,421
    Записей в дневнике
    50
    Репутация: 55 Добавить или отнять репутацию

    По умолчанию

    Если котороко, позволяет выводить в сообщениях больше чем по 4 строчки за раз)

    Едит: ссылка ведет на .sk6.ru
    Последний раз редактировалось Рыб; 13.03.2011 в 20:35.
    Twitch <- Тут иногда делаю вид, что умею играть или работать, в прямом эфире
    GitLab <- Тут иногда делаю вид, что умею программировать
    Github <- Еще какая-то дичь, тут иногда появляется, но с мукером не связана
    Notion<- Тут иногда делаю вид что умею планировать

  6. #6

    По умолчанию

    Это морально устаревший скрипт, созданный для того, чтобы во всевозможных окошках можно было избавиться от пустого пространства между содержимым окна и его рамкой. Например, для оконтуривания таким образом портеретов. С появлением исходных кодов Window, более не актуален, так как в нем можно задать желаемый отступ.

    Ссылку поправил (впрочем, там 95% тоже морально устарела )

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

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

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

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

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

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

Ваши права

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