Подтверждение и обходной путь
Используя ваш сценарий и предоставленный файл, я могу точно воспроизвести результат.
Более того, если я выполню следующий скрипт (в GMS 3.4):
image img := RealImage("Test",4,10,10)
taggroup newTG = NewTagGroup()
newTG.TagGroupSetTagAsString("Test","oh")
img.imagegettaggroup().TagGroupSetTagAsTagGroup("TG",newTG)
img.ShowImage()
И затем запустить ваш скрипт, я получу:
Index GMS Version has type 0
Index TG has type 0
Однако, если я сохраню файл и затем снова откройте его и запустите ваш скрипт, я неожиданно получаю:
Index GMS Version has type 3
Index TG has type 3
Итак, что-то явно изменилось и отключено. Я попробовал некоторые старые данные (все сохраненные в GMS 3.x), и я всегда получаю тип 3 для TagGroups. Я не смог найти данные, сохраненные в GMS 2.x или GMS 1.x, но предположил, что один или оба вернут тип 0.
Я также заметил, что команда TagGroupGetTagTypeLength
возвращает 0 перед сохранением, но 1 для загруженного изображения, и я думаю, что это может быть связано.
Но есть обходной путь, который вы можете использовать, чтобы решить реальный вопрос. Для TagGroups (и TagLists) вы можете заменить свою проверку на тип фактической попыткой получить тег в качестве TagGroup, например:
clearResults();
image img;
img.GetFrontImage();
TagGroup tg = img.ImageGetTagGroup();
TagGroupOpenBrowserWindow(tg, 0);
for(number i = 0; i < tg.TagGroupCountTags(); i++){
String label = tg.TagGroupGetTagLabel(i);
number typeL = tg.TagGroupGetTagTypeLength(i);
number type = tg.TagGroupGetTagType(i, 0);
result("Index " + label + " has " + typeL + " types. Type = " + type + "\n");
TagGroup tgtest
if ( tg.TagGroupGetIndexedTagAsTagGroup(i,tgtest) )
Result("\tIt is as TagGroup (or TagList)!\n")
}