Проблемы с изображениями в массивах

Я пытаюсь использовать изображения в массивах - я исхожу из фона Java, поэтому я думаю, что изображение является объектом, и когда я помещаю его в массив, я ожидаю, что все свойства объекта будут сохранены . Это, кажется, не так.

Вот мой код:

put image sheep into animalarray[1]
answer the short name of image sheep
put animalarray[1] into  temp
answer the short name of temp 

Я ожидаю, что первые две строки кода будут эквивалентны вторым двум строкам кода, но это не так. Первые две строки делают то, что я ожидал (они отображают короткое имя моего изображения «овца»). Вторые две строки вызывают ошибку времени выполнения при выполнении четвертой строки. (Ошибка фрагмента в выражении объекта)

Как только я помещаю изображение в массив, перестает ли оно считаться объектом изображения? Должен ли я перестать думать об объектах?

Чем больше я использую LiveCode, тем меньше я в нем понимаю...


person DaveH    schedule 17.12.2013    source источник


Ответы (2)


Вы захотите сделать что-то вроде этого:

put the imagedata of image sheep into animalarray[1]

или это

put the text of image sheep into animalarray[1]

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

текст — это двоичные данные (т. е. файл), которые являются «источником» изображения. это остается прежним после манипулирования объектом изображения в ide.

person David Williams    schedule 17.12.2013
comment
Спасибо @David Williams, но моя проблема не в возможности использовать изображение, которое я помещаю в массив, а в использовании некоторых дополнительных данных (таких как короткое имя), которые существуют на исходном изображении, которое я внесите в массив. Я не понимаю, почему изображение овцы имеет короткое имя, а animalarray[1] (насколько я могу судить, это тот же объект изображения) — нет. - person DaveH; 18.12.2013
comment
в этом случае вы хотите поместить длинный идентификатор изображения овцы в массив животных [1]. тогда вы сможете использовать animalarray[1] для ссылки на изображение, например, установите ширину animalarray[1] на 500 и т. д. - person David Williams; 18.12.2013

Я думаю, что @David Williams хорошо ответил на этот вопрос, но вот дополнительная информация:

В LiveCode объекты и переменные — это не одно и то же. Объекты имеют свойство по умолчанию с именем «текст», поэтому, если вы put image X into theImage помещаете текст объекта в переменную. Текст здесь представляет собой данные PNG, JPEG и т. д.

Если вы действительно хотите, чтобы свойства объекта были помещены в переменную, вы можете сделать это с помощью свойства properties:

put the properties of image sheep into animalarray[1]
answer animalarray[1]["name"]

Если вы действительно хотите что-то вроде указателя на исходный объект, то, как указывает Дэвид в своем комментарии, используйте:

put the long id of image sheep into animalarray[1]
answer the short name of animalarray[1]
person Monte Goulding    schedule 18.12.2013