PDA

Просмотр полной версии : XML > Flash позиционирование изображений


Deoni
29.06.2017, 19:13
Добрый день.

Есть файл XML, через который во Flash ролик подгружаются картинки со ссылками

код такой
<logo url="resources/tvnovosedlice.png" position="right middle" link="http://ya.ru" linktarget="_blank"/>
но как явно указать расположение картинок? Чтобы можно было их расположить не только по углам и центру.

undefined
29.06.2017, 21:26
это вопрос к тому,кто парсит эти xml и какие возможные значения position поддерживает.Или подгрузка идет не в флэш ролик, а в flash ide?

Deoni
29.06.2017, 21:38
Хмм.. не знаю... в какую сторону хоть начинать копать, чтобы выяснить этот вопрос?
Есть один swf и несколько папок с файлами as. Где смотреть?

ZackMercury
29.06.2017, 21:49
В файлах .as искать место, где разбирается XML и на какие куски оно разбирает атрибут position.

undefined
29.06.2017, 23:05
Поищи в as файлах где встречается строка "right middle" где-то рядом должны быть и другие допустимые значения

Deoni
01.07.2017, 21:48
спасибо за советы, нашел и почти получилось сделать, за исключением того, что теперь позиционировние задается только жестко через x y, а нужно, чтобы по горизонтали была относительная привязка right, а по вертикали уже устанавливалась вручную через XML.

нашел код в двух файлах, которые отвечают за парсинг и за отрисовку самого логотипа
код в них такой

в файле XMLLoader.as

...............

case "logo":
this.interfaceOptions.logos.push({
"url":"",
"position":[1,1],
"link":"",
"target":"_self"
});

..................

if(interfaceNode.childNodes[ii].attributes["position"] != undefined)
{
Pos = [0,0];
if(interfaceNode.childNodes[ii].attributes["position"].toLowerCase().search("left") >= 0)
{
Pos[0] = 0;
}
if(interfaceNode.childNodes[ii].attributes["position"].toLowerCase().search("center") >= 0)
{
Pos[0] = 1;
}
if(interfaceNode.childNodes[ii].attributes["position"].toLowerCase().search("right") >= 0)
{
Pos[0] = 2;
}
if(interfaceNode.childNodes[ii].attributes["position"].toLowerCase().search("top") >= 0)
{
Pos[1] = 0;
}
if(interfaceNode.childNodes[ii].attributes["position"].toLowerCase().search("middle") >= 0)
{
Pos[1] = 1;
}
if(interfaceNode.childNodes[ii].attributes["position"].toLowerCase().search("bottom") >= 0)
{
Pos[1] = 2;
}
/*старый код
this.interfaceOptions.logos[this.interfaceOptions.logos.length - 1].position = [Pos[0],Pos[1]];
*/
//новый код
this.interfaceOptions.logos[this.interfaceOptions.logos.length - 1].position = [Pos[0],interfaceNode.childNodes[ii].attributes["yposition"]];
........................................

в файле Logo.as

...................
public class Logo extends MovieClip
{


private var _position:Array;


private var _link:String;

private var _target:String;

private var _logoLoader:Loader;

private var _logoLoaderContext:LoaderContext;

public var loaded:Boolean = false;

private var mainApplication;

public function Logo(param1:String, param2:Array = null, param3:String = "", param4:String = "")
{
super();
this.mainApplication = DigitalBrochure.getInstance();
this._link = param3;
this._target = param4;
if(param2 == null)
{
this._position = [1,1];
}
else
{
/*старый код
this._position =param2;
*/
//новый код
this.x = 800;
this.y = param2[1]


}
.............


в файле Settings.xml

<logo url="resources/link_1.png" position="right" link="link_1" linktarget="_blank" yposition="50" />
<logo url="resources/link_2.png" position="right" link="link_2" linktarget="_blank" yposition="100" />
<logo url="resources/link_3.png" position="right" link="link_3" linktarget="_blank" yposition="150" />
<logo url="resources/link_4.png" position="right" link="link_4" linktarget="_blank" yposition="200" />