我正在尝试在游戏中制作Google广告。我使用Pozirk Ane admob。我在Actionscript 3设置中添加了库文件和ane。
当我测试Debug时,出现此错误。
ANE链接
https://github.com/pozirk/ANEAdMob
我不知道错误在哪里。
尝试使用URL C:/APK/Reklam/Testreklam-app.xml启动并连接到Player
[SWF] com.pozirk.ads.AdMob - 7065 bytes after decompression
[SWF] Testreklam.swf - 45613 bytes after decompression
ArgumentError: Error #3500: The extension context does not have a method with the name cacheInterstitial.
at flash.external::ExtensionContext/_call()
at flash.external::ExtensionContext/call()
at com.pozirk.ads.admob::AdMob/cacheInterstitial()[D:\Pozirk\_projects\ANEAdMob\air\AdMob\com\pozirk\ads\admob\AdMob.as:83]
at Main()[C:\APK\Reklam\Main.as:43]
at runtime::ContentPlayer/loadInitialContent()
at runtime::ContentPlayer/playRawContent()
at runtime::ContentPlayer/playContent()
at runtime::AppRunner/run()
at ADLAppEntry/run()
at global/runtime::ADLEntry()
我的Main.as代码
package {
import flash.display.MovieClip;
import com.pozirk.ads.admob.AdMob;
import com.pozirk.ads.admob.AdParams;
import com.pozirk.ads.admob.AdEvent;
import flash.events.MouseEvent;
public class Main extends MovieClip {
private var _bannerAdUID:String = "ca-app-pub-3940256099942544/6300978111";//BİZİMDEGİL
private var _intersAdUID:String = "ca-app-pub-4769962435850149/5055329136";
protected var _banner:AdMob = new AdMob();
protected var _inters:AdMob = new AdMob();
private var _initOK:Boolean = false;
private var _isShow:Boolean = false;
private var _cacheOK:Boolean = false;
public function Main() {
// constructor code
btBanner.addEventListener(MouseEvent.CLICK, showBanner);
btInters.addEventListener(MouseEvent.CLICK, showInterstitial);
_banner.init();
_banner.addEventListener(AdEvent.INIT_OK, onInitEvent);
_banner.addEventListener(AdEvent.INIT_FAIL, onEvent);
_banner.addEventListener(AdEvent.BANNER_SHOW_OK, onEvent);
_banner.addEventListener(AdEvent.BANNER_SHOW_FAIL, onEvent);
_banner.addEventListener(AdEvent.BANNER_LEFT_APP, onEvent);
_banner.addEventListener(AdEvent.BANNER_OPENED, onEvent);
_banner.addEventListener(AdEvent.BANNER_CLOSED, onEvent);
_inters.init();
_inters.addEventListener(AdEvent.INIT_OK, onInitEvent);
_inters.addEventListener(AdEvent.INIT_FAIL, onEvent);
_inters.addEventListener(AdEvent.INTERSTITIAL_SHOW_OK, onEvent);
_inters.addEventListener(AdEvent.INTERSTITIAL_SHOW_FAIL, onEvent);
_inters.addEventListener(AdEvent.INTERSTITIAL_CACHE_OK, onCacheEvent);
_inters.addEventListener(AdEvent.INTERSTITIAL_CACHE_FAIL, onEvent);
_inters.addEventListener(AdEvent.INTERSTITIAL_LEFT_APP, onEvent);
_inters.addEventListener(AdEvent.INTERSTITIAL_OPENED, onEvent);
_inters.addEventListener(AdEvent.INTERSTITIAL_CLOSED, onCloseIntersEvent);
_inters.cacheInterstitial(_intersAdUID);
}
protected function onEvent(event:AdEvent):void {
}
protected function onInitEvent(event:AdEvent):void {
_initOK = true;
}
protected function onCacheEvent(event:AdEvent):void {
_cacheOK = true;
}
protected function onCloseIntersEvent(event:AdEvent):void {
_inters.cacheInterstitial(_intersAdUID);
}
////////////
private function showBanner(e:MouseEvent):void {
if(_initOK) {
if(!_isShow) {
_banner.show(_bannerAdUID, AdParams.SIZE_SMART_BANNER, AdParams.HALIGN_CENTER, AdParams.VALIGN_BOTTOM);
_isShow = true;
}else {
_banner.hide();
_isShow = false;
}
} else {
trace("Banner Not Ready.");
}
}
private function showInterstitial(e:MouseEvent):void {
if(_initOK && _cacheOK) {
_inters.showInterstitial();
} else {
trace("Inters Not Ready.");
}
}
}
}
APP XML文件代码
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<application xmlns="http://ns.adobe.com/air/application/24.0">
<id>Testreklam</id>
<versionNumber>1.0.0</versionNumber>
<versionLabel/>
<filename>Testreklam</filename>
<description/>
<!-- To localize the description, use the following format for the description element.<description><text xml:lang="en">English App description goes here</text><text xml:lang="fr">French App description goes here</text><text xml:lang="ja">Japanese App description goes here</text></description>-->
<name>Testreklam</name>
<!-- To localize the name, use the following format for the name element.<name><text xml:lang="en">English App name goes here</text><text xml:lang="fr">French App name goes here</text><text xml:lang="ja">Japanese App name goes here</text></name>-->
<copyright/>
<initialWindow>
<content>Testreklam.swf</content>
<systemChrome>standard</systemChrome>
<transparent>false</transparent>
<visible>true</visible>
<fullScreen>true</fullScreen>
<aspectRatio>portrait</aspectRatio>
<renderMode>direct</renderMode>
<autoOrients>false</autoOrients></initialWindow>
<icon>
<image72x72>AppIconsForPublish/Medal-2-icon.png</image72x72>
</icon>
<customUpdateUI>false</customUpdateUI>
<allowBrowserInvocation>false</allowBrowserInvocation>
<android>
<manifestAdditions>
<![CDATA[<manifest><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><application>
<meta-data android:name="com.google.android.gms.version" android:value="4323000" /> <!-- should be android:value="@integer/google_play_services_version" --> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
</application></manifest>]]>
</manifestAdditions>
</android>
<versionLabel> </versionLabel>
<extensions>
<extensionID>com.pozirk.ads.AdMob</extensionID>
</extensions>
</application>
最佳答案
(1)尝试在添加_inters
之前添加_inters.init();
自己的事件侦听器(这样,当您的init()
发生时,侦听器将准备就绪)。
(2)关于此错误:
ArgumentError:Error #3500:
“扩展上下文没有名称为cacheInterstitial
的方法。
尝试在实际设备上测试代码,例如:Android。它不能在桌面调试器上运行。请参见line 41 of AdMob.as(功能init():void
)...您将找到if(err.errorID == 3500)
:
catch(err:Error)
{
var e:AdEvent = null;
if(err.errorID == 3500)
e = new AdEvent(AdEvent.INIT_FAIL, "Isn't it clear, that ANDROID Extension will NOT work on PC/Mac???");
else
e = new AdEvent(AdEvent.INIT_FAIL, "ANE was not properly added to your project.");
this.dispatchEvent(e);
}