1

在 Adob​​e Air 中使用 ActionScript3 构建的应用程序中,我们无法在屏幕中央放置来自 LeadBolt 的广告。

我们使用带有简单 HTML 代码的 StageWebView 来包围与 LeadBolt 一起使用的脚本。广告按应有的方式加载,因此在那里没有问题。

我们的设置是将 SWF 设置为 width=800 和 height=480,并使用 StageScaleMode.EXACT_FIT 和 StageAlign.TOP_LEFT。我们尝试为 viewPort 设置的矩形设置几个不同的值。例如,我们尝试了 (0, 0, 800, 480) 以及 0, 0 和 Capabilities.screenResolutionX/Y。

_adWindow.viewPort = new Rectangle(startX,startY,bannerWidth,bannerHeight);

然后我们尝试在发送到 loadString() 的 HTML 中使用 css-margin 调整广告本身的位置。我们尝试使用 _marginLeft 静态和动态地设置边距(在我们尝试高度之前只尝试使用 marginleft)。

_marginLeft = (Main.screenResX * 0.5) - (1.875 * Main.screensDPI * 0.5);

这是我们尝试获取 _marginLeft 值的设置。1.875 是英寸宽度的值,因为广告似乎在所有设备上始终具有此静态宽度。它应该是 w:300px 但这不会发生?

这是我们使用 loadString() 调用字符串的代码)

_htmlString = "<!DOCTYPE HTML>";
_htmlString += "<html><body style='margin:0 0 0 " + _marginLeft + "px;padding:0;'>";
_htmlString += "<script type='text/javascript' src='http://ad.leadboltads.net/show_app_ad.js?section_id=xxxxxxx'></script>";
_htmlString += "</body></html>";

它只是无法正常工作。我们可以将广告动态放置在 10.1 英寸标签的中间,但随后广告被错误地放置在 4 英寸手机上。该选项卡的 DPI 为 160(或者实际上是制造商的 149,但功能显示不正确),手机的 DPI 为 320(这是正确的值)。

似乎 stagewebview 中的像素与我们发送到 viewPort 的值之间可能存在某种失真?可能与 w:800 和 Capabilties.screenResolutionX 比率有关吗?

任何帮助表示赞赏:-)

4

1 回答 1

0

正如怀疑的那样,似乎是 StageScaleMode.EXACT_FIT 把事情搞砸了。

StageScaleMode.NO_SCALE 解决了这个问题。在那之后,

adWindow.viewPort = new Rectangle(stage.fullScreenWidth * 0.5 - adWidth * 0.5, 
stage.fullScreenHeight * 0.5 - adHeight * 0.5,
bannerWidth,bannerHeight);

奇迹般有效 :-)

于 2013-04-18T18:11:44.427 回答