2016-05-01 7 views
0

В Livecode я извлекаю информацию из базы данных с помощью XML и организую ее с помощью функции повтора. Поэтому для каждого узла есть информация, такая как фотография, имя, возраст и т. Д.Как преобразовать URL-адрес в поле в фотографию?

Фотография, однако, считывается из XML в качестве ссылки на ссылку на изображение. Есть ли способ автоматически загружать этот URL-адрес и отображать изображение с информацией также в этом узле после него?

on preOpenStack 
put url "http://www.petango.com/webservices/wsadoption.asmx/AdoptableSearch?authkey=XXXXXXXX&speciesID=&sex=&ageGroup=&location=&site=&onHold=&orderBy=&primaryBreed=&secondaryBreed=&specialNeeds=&noDogs=&noCats=&noKids=&stageID=" into tURL 
put revCreateXMLTree(tURL, true, true, false) into tInfo 
put revXMLChildNames(tInfo, "ArrayOfXmlNode", return, "XmlNode", true) into tChildren 
repeat for each line tChild in tChildren 
    add 1 to x 
    put revXMLChildNames(tInfo, "ArrayOfXmlNode/"&tChild&backslash, return, "adoptableSearch", true) into tAdoptable 

    put revXMLNodeContents(tInfo, "ArrayOfXmlNode/"&tChild&"/"&tAdoptable&"/Photo") into tData 
    put "Name: " & revXMLNodeContents(tInfo, "ArrayOfXmlNode/"&tChild&"/"&tAdoptable&"/Name") & return after tData 
    put return after tData 
    put return after tData 
end repeat 

    put tData & return after tOutput 
    set the text of field "tData" to tOutput 

end preOpenStack 

ответ

0

Вы пишете, что узел XML возвращает URL-адрес фотографии, но вы не записываете, какой именно узел это. предположим, что

revXMLNodeContents(tInfo, "ArrayOfXmlNode/"&tChild&"/"&tAdoptable&"/Photo") 

возвращает URL-адрес. Поместите URL в переменный и использовать его, чтобы установить текст объекта изображения:

put revXMLNodeContents(tInfo, "ArrayOfXmlNode/"&tChild&"/"&tAdoptable&"/Photo") into myUrl 
put url myUrl into myPictureData 
if the result is empty then 
    set the text of img 1 to myPictureData 
else 
    beep 
    answer error "Can't load picture." 
end if 
+0

Mark, Это действительно сработало, но это всего лишь одно изображение в середине экрана, которое переключается между изображениями, когда оно повторяется до следующего узла. Есть ли способ сделать каждое изображение отдельным от последнего? – CElwell

+0

@CElwell Да, есть. Узнайте больше о LiveCode и работе с объектами изображения. Читайте о собственности 'rect' и подумайте о дизайне вашего проекта. Если вам нужна помощь, вероятно, лучше задать новый вопрос. – Mark

0

Извините за коробления нити после Marks отличного ответа. Но я обычно просто установить имя файла для изображения:

repeat for each line tChild in tChildren 
    add 1 to x 
    ... 
    put revXMLNodeContents(tInfo, "ArrayOfXmlNode/"&tChild&"/"&tAdoptable&"/Photo") into myUrl 
    create image ("image" && x) 
    put it into tImageID 
    set the filename of tImageID to myURL 
    ... 
end repeat 

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

+0

Есть некоторые проблемы с этим методом, которые вы можете решить, если являетесь продвинутым программистом. Поэтому я решил использовать несколько более надежный и надежный метод. – Mark

+0

Прошу прощения, так как я не видел вашего ответа. Я понимаю, что здесь говорит и Марк, но я также пробовал ваш метод и в итоге оказался с той же проблемой, что и изображения, появляющиеся в середине приложения один поверх другого. – CElwell

+0

Если вы создаете образы «на лету», хорошо какой-либо контроль на самом деле, они будут размещены в центре, и вам нужно будет переместить его в правильное положение с помощью кода. Если у вас есть предопределенные изображения, вы можете заблокировать их размер и положение, и они будут содержать как размер, так и положение. – hliljegren