Перейти к содержимому


Фотография

Странная работа события onLoad


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1808 сообщений

Отправлено 14 July 2016 - 00:52

Имеется диалог, в описании которого задан обработчик события:

onLoad = "call onDialogLoading";

В обработчике события изменяется текст элемента интерфейса:

#include "..\definitions.hpp"

ctrlSetText [SOME_IDC, "Some text"];

true

Однако при создании диалога изменений не происходит.

 

Если же обработчик события запускать с помощью spawn, то всё работает.

Также всё работает, если код обработчика события поменять на такой:

#include "..\definitions.hpp"

_display = _this select 0;

_control = _display displayCtrl SOME_IDC;

_control ctrlSetText "Some text";

true

Причём display каким-то образом определён, хотя я его в обработчик события не передаю.

 

Кто-нибудь может объяснить, почему так происходит?

 

P. S.

Заранее благодарен.


  • 0

#2 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 14 July 2016 - 01:16

а что внутри?

#include "..\definitions.hpp"

 

Причём display каким-то образом определён, хотя я его в обработчик события не передаю

 

такой вызов

call onDialogLoading

предоставляет вызываемой функции доступ к контексту из которого произошёл вызов.


  • 1

#3 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 14 July 2016 - 01:30

По сути, второй вариант как бы предпочтительнее.


ЗЫ

Про главное забыл)

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

disableSerialization;
// дальнейший код

  • 0

#4 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1808 сообщений

Отправлено 14 July 2016 - 02:14

а что внутри?

#include "..\definitions.hpp"
#define SOME_IDC 3000

Дело не в этом файле.
 

 

Причём display каким-то образом определён, хотя я его в обработчик события не передаю

 
такой вызов
call onDialogLoading
предоставляет вызываемой функции доступ к контексту из которого произошёл вызов.

 

Действительно, забыл про это.
 

По сути, второй вариант как бы предпочтительнее.

Чем? Если можно работать напрямую по IDC, то не вижу ничего предпочтительного. К тому же для этого нужно больше кода.
 

Про главное забыл)

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

Работает и без disableSerialization.

Остался один вопрос: почему при запуске обработчика события с помощью spawn всё работает?


Сообщение отредактировал Schatten: 14 July 2016 - 02:20

  • 0

#5 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 14 July 2016 - 05:06

Schatten, вариант:

_control ctrlSetText "Hello world.";

Работает куда лучше чем:

ctrlSetText [100, "Hello world"];

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

БИСы даже чаще 1 вариант используют


Сообщение отредактировал vlad333000: 14 July 2016 - 05:07

  • 1

#6 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 14 July 2016 - 06:07

 

БИСы даже чаще 1 вариант используют

Я перелопатил туеву хучу БЕСовского творчества по сриптам обрабатывающим GUI, уточню, из Армы 3, и даже не могу вспомнить хоть одного случая где я встретил бы конструкцию

ctrlSetText [100, "Hello world"];

везде сначала код получает объект контролса, и далее уже применяются параметры.

 

Я в свою очередь решил поступать как обезьяна), и меня это ещё не разу не подводило.


 

Работает и без disableSerialization.
 

Зависит от того что засунуть в обработчик дисплея, в моих извращениях это приходится применять поголовно).


  • 0

#7 OFFLINE   DrSova

DrSova

    Рядовой

  • Пользователи
  • 5 сообщений

Отправлено 19 August 2016 - 20:55


Я перелопатил туеву хучу БЕСовского творчества по сриптам обрабатывающим GUI, уточню, из Армы 3, и даже не могу вспомнить хоть одного случая где я встретил бы конструкцию

Это синтаксис с первой армы,  сейчас он не актуален.


  • 0

#8 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 August 2016 - 21:51

 


Я перелопатил туеву хучу БЕСовского творчества по сриптам обрабатывающим GUI, уточню, из Армы 3, и даже не могу вспомнить хоть одного случая где я встретил бы конструкцию

Это синтаксис с первой армы,  сейчас он не актуален.

 

 

Он работает, только не всегда так как хочется.

По этому, сначала получить объект, после применить параметры к объекту.


  • 0




Яндекс.Метрика