Еще один вопрос. Если я создаю диалоговое окно с изображением всплывающего окна, я обнаруживаю, что он работает только тогда, когда используется интерфейс (верхний в списке изображений). Если выбрано другое изображение, программа сообщит, что «изображение, используемое в выражении, не существует». Я не могу понять логику этой ошибки.

Ниже приведен измененный код, вставленный в ответ на предыдущий вопрос. Он может хорошо работать, если выбрано первое изображение, но сообщение об ошибке появляется, если выбрано второе изображение.

Я использую GSM 2.30.xxxx

Class CMyDLG : UIframe
{
   TagGroup DLG,DLGItems,imgPop        
   object Init(object self)
   {
          DLG = DLGCreateDialog("Test",DLGItems)
          imgPop = DLGCreateImagePopup()
          DLGItems.DLGAddElement( imgPop )       
          return self.super.init(DLG)
   }
   image GetSelectedImage( object self )
   {
          string selectedImageLabel
          imgPop.DLGGetValue(selectedImageLabel) //DLGGetValue can return the label of the image diretly
          Result("\n" + selectedImageLabel)
          // From the string, get the label
          //string label = selectedImageLabel.left( selectedImageLabel.find(":") )              
          //Result("\n" + label)
          // From label, return image
          //return FindImageByLabel(label)
          return FindImageByLabel(selectedImageLabel)
   }
}

// main
{       
   object dlg = Alloc(CMyDLG).Init()
   dlg.Pose()
   image selected = dlg.GetSelectedImage()
   if ( selected.ImageIsValid() )
   {
          selected.SetName( "Selected" + random())
          selected.ShowImage()
    }
   else Throw( "Error, nothing selected." )
}
0
Yuan Yao 5 Окт 2019 в 03:20

2 ответа

Пример кода (первый сценарий) в этом ответе, кажется, работает с любым из открытых изображений, если он выбран.

Однако есть (упомянутая) ошибка, заключающаяся в том, что он не работает при первом выборе, только когда вы выбираете одно изображение, а затем другое.

Если ваш код не работает, предоставьте сокращенный пример кода с ошибкой, чтобы можно было обнаружить ошибку.

0
BmyGuest 7 Окт 2019 в 18:35
Я добавил код к вопросу с небольшими изменениями. Большое тебе спасибо.
 – 
Yuan Yao
8 Окт 2019 в 08:46

Используя тестовый код на GMS 3.3, он работает кроме упомянутой ошибки. Я предполагаю, что это то же самое для GMS 2.3, но я не проверял.

Чтобы убедиться, что мы тестируем то же самое, вот точные инструкции и подробное описание:


  • Начните с двух изображений: A , B и A , которые находятся на переднем плане.
  • Выполнить скрипт
  • Ничего не меняйте в диалоге
  • Нажмите ОК
  • ОШИБКА

Диалог - группа тегов (пока) не имеет никакого значения. Возможно, так и должно быть, я считаю это ошибкой .


  • Начните с двух изображений: A , B и A , которые находятся на переднем плане.
  • Выполнить скрипт
  • Щелкните поле выбора и выберите «A» в раскрывающемся списке.
  • Нажмите ОК
  • А правильно выбран

  • Начните с двух изображений: A , B и A , которые находятся на переднем плане.
  • Выполнить скрипт
  • Щелкните поле выбора и выберите «B» в раскрывающемся списке.
  • Нажмите ОК
  • ОШИБКА

Диалог - группа тегов (пока) не имеет никакого значения. Это определенно должно быть, я считаю это ошибкой . Скорее всего, это то, что вы описывали?


  • Начните с двух изображений: A , B и A , которые находятся на переднем плане.
  • Выполнить скрипт
  • Щелкните поле выбора и выберите «A» в раскрывающемся списке.
  • Щелкните поле выбора и выберите «B» в раскрывающемся списке.
  • Нажмите ОК
  • B правильно выбран

Обобщить:

Да, в вашем скрипте есть ошибка, и все в порядке.

Поле выбора работает только после выбора элемента второй раз .

0
BmyGuest 8 Окт 2019 в 10:15
Если вы сначала нажмете B и снова нажмете B, ошибка все равно будет. Кажется, что сначала вам нужно щелкнуть A, а затем щелкнуть по изображению, которое вы хотите получить, чтобы гарантировать правильный ответ. Так что этот диалог теряет свою ценность.
 – 
Yuan Yao
9 Окт 2019 в 16:13
Я согласен. Это ошибка, которую нужно исправить. Однако можно создать собственный элемент пользовательского интерфейса «селектор изображений», используя (и заполняя) свой собственный элемент управления раскрывающимся меню.
 – 
BmyGuest
9 Окт 2019 в 19:49