2013-12-17 1 views
1

Я пытаюсь использовать изображения в массивах - я исхожу из фона 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, тем меньше я понимаю ...

ответ

3

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

put the imagedata of image sheep into animalarray[1] 

или это

put the text of image sheep into animalarray[1] 

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

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

+0

Спасибо @David Williams, но моя проблема заключается не в состоянии использовать изображение, которое я помещаю в к массиву, это с помощью некоторых дополнительных данных (например, краткое имя), которое существует на исходном изображении, которое я ввел в arra у. Я не понимаю, почему изображение «овец» имеет короткое имя, но animalarray [1] (который является тем же самым объектом изображения, насколько я могу судить) не делает. – DaveH

+0

В этом случае вы хотите «положить длинный идентификатор овечьей овцы в animalarray [1]». вы сможете использовать animalarray [1] для обозначения изображения, например «установите ширину животного поля [1] на 500» и т. д. –

3

Я думаю, @David Уильямс ответил на этот колодец, но здесь идет еще какой-то информации:

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

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

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]