PDA

Просмотр полной версии : как из загруженной флешки получить доступ к XML объекту в загружаемой


NALight
24.11.2008, 13:38
Добрый день.
Собсно, в чем дело. Локальная флешка загружает другую с удаленного сервера, код на удаленной флешке такой

trace("a " + _root.a)
trace("xml " + _root.myxml.firstChild)


код в флешке, которая загружает

System.security.allowDomain('*')

var a:Number = 10
var myxml:XML = new XML('<Message type="1" />')

var loader:MovieClipLoader = new MovieClipLoader()


loader.loadClip('http://db.nura.biz/aaa.swf', mc)


в результате получаем

a 10
*** Security Sandbox Violation ***
SecurityDomain 'http://db.nura.biz/aaa.swf' tried to access incompatible context 'file:///C|/Documents%20and%20Settings/Admin%5FLight/Рабочий%20стол/test.swf'
xml undefined

Как видно, доступ к свойствам XML запрещен политикой безопасности, в то же время, к собственным классам он открыт, в чем тут проблема?

NALight
01.12.2008, 14:39
получить доступ к xml св-вам и методам можно если описать собственную обертку над xml и создать экземпляр в клипе с лоадером, типо так...

class classes.MyXMLNode
{
private var _xmlNode:XMLNode


function MyXMLNode(node)
{
_xmlNode = node
}

public function get firstChild()
{
return new MyXMLNode(_xmlNode.firstChild)
}


public function get attributes()
{
return _xmlNode.attributes
}


public function get childNodes()
{
var childNodes:Array = []

for (var i = 0; i < _xmlNode.childNodes.length; i++)
{
childNodes.push(new MyXMLNode(_xmlNode.childNodes[i]))
}

return childNodes
}
}


но почему это работает только в таком варианте? кто может обьяснить неопытному флешеру?