Если вы хотите сделать это в виде диалогового окна (т.е. получить изображение после нажатия кнопки ОК), вы можете сделать это следующим образом:
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)
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)
}
}
// main
{
object dlg = Alloc(CMyDLG).Init()
dlg.Pose()
image selected := dlg.GetSelectedImage()
if ( selected.ImageIsValid() )
selected.SetName( "Selected" + random())
else Throw( "Error, nothing selected." )
}
Если вы хотите что-то сделать с изображениемв то время как диалоговое окно все еще отображается (немодальное диалоговое окно), вам нужно будет прикрепить метод типа OnChanged к элементу, как показано в:
Class CMyDLG : UIframe
{
TagGroup DLG,DLGItems,imgPop
void FieldChanged(object self, taggroup tg)
{
string selectedImageLabel
tg.DLGGetValue(selectedImageLabel)
Result("\n" + selectedImageLabel)
// From the string, get the label
string label = selectedImageLabel.left( selectedImageLabel.find(":") )
Result("\n" + label)
// From label, return image
image selected := FindImageByLabel(label)
if ( selected.ImageIsValid() )
selected.SetName( "Selected" + random())
else Throw( "Error, nothing selected." )
}
object Init(object self)
{
DLG = DLGCreateDialog("Test",DLGItems)
imgPop = DLGCreateImagePopup().DLGChangedMethod("FieldChanged")
DLGItems.DLGAddElement( imgPop )
return self.super.init(DLG)
}
}
// main
{
Alloc(CMyDLG).Init().display("myDialog")
}
Обратите внимание, что когда я тестировал этот скрипт напоследняя версия GMS 3, я заметил ошибку . Метод Changed (и, следовательно, фактический выбор), по-видимому, происходит только при обращении к раскрывающемуся списку во второй раз .