Проблема выбора изображения в диалоге imagepupop - PullRequest
0 голосов
/ 05 октября 2019

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

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

Я использую 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." )
}

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

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

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


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

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


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

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

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


  • Начните с двух изображений A и B и A существоfront-most.
  • Запуск сценария
  • Щелкните поле выбора и выберите «A» в раскрывающемся списке
  • Нажмите поле выбора и выберите «B» из раскрывающегося списка-down
  • Нажмите OK
  • B правильно выбран

Подведем итог:

Да, естьэто ошибка и ничего плохого в вашем скрипте.

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

0 голосов
/ 07 октября 2019

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

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

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

...