AS3 - 动态加载的位置广告

时间:2011-06-18 11:20:15

标签: actionscript-3 positioning

我正在使用以下代码在我正在构建的移动游戏中放置广告。我的问题是广告出现在舞台的左上角,我需要能够将其移动到靠近底部的中心位置。我从一本书中得到了这个代码,我理解它正在做的事情的70%。感谢您提供的任何方向。

// Smaato Advertising Code for Start Screen

var request:URLRequest = new URLRequest("http://soma.smaato.com/oapi/reqAd.jsp");
var variables:URLVariables = new URLVariables();
variables.adspace = "0";
variables.pub = "0";

variables.devip = "127.0.0.1";
variables.format = "IMG";
variables.adcount = "1";
variables.response = "XML";
request.data = variables;
var loader:URLLoader = new URLLoader();

loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(request);


function onComplete(e:Event):void
{
var data:XML = new XML(loader.data as String);
var status:String = data.*::status.toString();
if(status == "success")
{
    var ad:XMLList = data.*::ads.*::ad;
    var link:String = ad.*::link.toString();

    var l:Loader = new Loader();
    l.load(new URLRequest(link));
    addChild(l);
    var clickurl:String = ad.*::action.@target.toString();
    l.addEventListener(MouseEvent.CLICK, onAdClick);

    function onAdClick(e:MouseEvent):void
    {
        var request:URLRequest = new URLRequest(clickurl);
        navigateToURL(request);
    }

}
}

1 个答案:

答案 0 :(得分:0)

问题在于您实际上从未实际定位图像,因此默认为[0,0],即屏幕的左上角。

var request:URLRequest = new URLRequest("http://soma.smaato.com/oapi/reqAd.jsp");
var variables:URLVariables = new URLVariables();
variables.adspace = "0";
variables.pub = "0";

variables.devip = "127.0.0.1";
variables.format = "IMG";
variables.adcount = "1";
variables.response = "XML";
request.data = variables;
var loader:URLLoader = new URLLoader();

loader.addEventListener(Event.COMPLETE, onComplete);
loader.load(request);


function onComplete(e:Event):void
{
    var data:XML = new XML(loader.data as String);
    var status:String = data.*::status.toString();
    if(status == "success")
    {
        var ad:XMLList = data.*::ads.*::ad;
        var link:String = ad.*::link.toString();
        var l:Loader = new Loader();
        l.load(new URLRequest(link));
        l.contentLoaderInfo.addEventListener(Event.COMPLETE, onAdLoaded);
        function onAdLoaded(e:Event):void
        {
            var ad:DisplayObject = e.target.content;
            addChild(ad);
            ad.x = (ad.stage.stageWidth - ad.width)  / 2;
            ad.y = (ad.stage.stageHeight - ad.height) / 2 + 50;
        }
        var clickurl:String = ad.*::action.@target.toString();
        l.addEventListener(MouseEvent.CLICK, onAdClick);
        function onAdClick(e:MouseEvent):void
        {
            var request:URLRequest = new URLRequest(clickurl);
            navigateToURL(request);
        }
    }
}

这将使加载的文件居中。 50 数字是因为如果您不希望它在正确的中心,您可以使用该数字来相应地调整y值。

顺便说一句,我建议你再拿一本书,因为你使用的代码看起来有点陈旧,而且表现不佳。

如果您对此有任何其他问题,请对其进行评论,我可以扩展我的答案。