Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.07.2015, 15:48
AlexCooper вне форума Посмотреть профиль Отправить личное сообщение для AlexCooper Найти все сообщения от AlexCooper
  № 1  
Ответить с цитированием
AlexCooper
 
Аватар для AlexCooper

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию [Starling] HardwareAccelerate и full-screen banners ( AdMob.Intersteil / AdColony )

Здравствуйте.
Не удается вывести фулл-скрин баннеры. Как только даю команду выполнения метода показывающий баннер, приложение минимализируется (сворачивается), без отображения баннера.
Код рабочий, так как писал его я, и отлично работает без аппаратного ускорения (исходки из предидущих наработок / или же может быть, я не там ищу)

Посмотрите может что знаете, стыкались с подобный, или увидите в чём проблема.

Код AS3:
package net.alexscript.advers
{
	public interface IADSetup
	{
		function get type():uint;
	}
}
 
package net.alexscript.advers
{
	import flash.events.IEventDispatcher;
 
	public interface IAd extends IEventDispatcher
	{
		function show(type:String):void
		function activate(type:String):void 
	}
}
Код AS3:
var google:IADSetup = new AdMobConfig('my_appID','my_BannerID','my_InterstitialID');
AdCore.enable( google, AdCore.INTERSTITIAL );
Код AS3:
public function enable(setup:IADSetup,key:String='AD_TYPE'):void
{
	var ad:IAd
 
	switch (setup.type) {
 
		case GOOGLE_ADMOB:
			ad = new ExtendsAdMob(setup);
		break;
 
		case ALCHEMY_ADMOB:
		//	ad = new AdMobAlchemy();
		break;
 
		case ADCOLONY_ADMOB:
			ad = new ExtendsAdColony(setup);
		break;
 
		default: return;
	}
 
	ad.addEventListener( ADEvent.OPEN, cmdProvider );
	ad.addEventListener( ADEvent.CLOSE, cmdProvider );
	ad.addEventListener( ADEvent.AD_LOAD_COMPLETE, cmdProvider);
	ad.addEventListener( ADEvent.AD_ERROR, cmdProvider);
 
	runtime.push( ad );
 
	Debug.log('Advers.activate('+key+')');
 
	ad.activate( key );
}
Класс работы с ЭдМобом
Код AS3:
package net.alexscript.advers
{
	import com.admob.AdMobEvent;
	import com.admob.AdMobManager;
	import com.admob.AdMobPosition;
	import com.admob.AdMobSize;
 
	import flash.events.EventDispatcher;
	import flash.system.Capabilities;
 
	public class ExtendsAdMob extends EventDispatcher implements IAd
	{
		private var setupConfig:AdMobConfig;
		private var isShow:Boolean = false;
 
		private static var adMobManager:AdMobManager;
 
		public function ExtendsAdMob(cfg:IADSetup)
		{
			setupConfig = cfg as AdMobConfig;
 
			adMobManager = AdMobManager.manager;
 
			if(adMobManager.isSupported){
 
				adMobManager.verbose = Capabilities.isDebugger;
 
				if (setupConfig.testMode) {
					adMobManager.operationMode = AdMobManager.TEST_MODE;
					adMobManager.testDeviceID = adMobManager.device;
				} else {
					adMobManager.operationMode = AdMobManager.PROD_MODE;
				}
 
				adMobManager.isCDT = true;	
			}
		}
 
		public function activate(type:String):void {
 
			Debug.log(this+' -> '+type); 
 
			switch (type) 
			{	
				case AdCore.BANNER:
 
					adMobManager.bannersAdMobId = setupConfig.bannerID;
					addListener( AdCore.BANNER );
 
					adMobManager.createBanner(AdMobSize.BANNER,AdMobPosition.BOTTOM_CENTER,AdCore.BANNER, setupConfig.bannerID, true);
 
				break;
 
				case AdCore.INTERSTITIAL:
 
					adMobManager.interstitialAdMobId = setupConfig.interstitialID;
					addListener( AdCore.INTERSTITIAL );
 
					adMobManager.cacheInterstitial();
 
				break;
 
				default: 
				break;
			}
		}
 
		public function show(type:String):void {
 
			Debug.log('Show '+type);
 
			if(adMobManager.isSupported) 
			{ 	
				switch (type) 
				{
					case AdCore.EXIT:
					case AdCore.INTERSTITIAL: 
					{
						Debug.log('Interstitial loaded status '+adMobManager.isInterstitialLoaded());
 
						if(adMobManager.isInterstitialLoaded())	
							adMobManager.showInterstitial();
						else 
							adMobManager.cacheInterstitial();
 
						isShow = true;
 
					} break;
 
					case  AdCore.BANNER:
						adMobManager.showBanner(type);
						break;
				}
			}
		}
 
		private function addListener(type:String):void
		{
			var eventMap:Vector.<String>;
 
			switch (type) {	
 
				case AdCore.BANNER:
					eventMap = new <String>
					[	AdMobEvent.BANNER_LOADED,
						AdMobEvent.BANNER_AD_OPENED,
						AdMobEvent.BANNER_AD_CLOSED,
						AdMobEvent.BANNER_FAILED_TO_LOAD,
						AdMobEvent.BANNER_LEFT_APPLICATION
					];	break;
 
				case AdCore.INTERSTITIAL:
					eventMap = new <String>
					[	AdMobEvent.INTERSTITIAL_LOADED,
						AdMobEvent.INTERSTITIAL_AD_OPENED,
						AdMobEvent.INTERSTITIAL_AD_CLOSED,
						AdMobEvent.INTERSTITIAL_FAILED_TO_LOAD,
						AdMobEvent.INTERSTITIAL_LEFT_APPLICATION
					];	break;
 
				default: return;
			}
 
			dispatcher.addEventListener( eventMap.shift(), onBannerLoaded);
			dispatcher.addEventListener( eventMap.shift(), onStatusHandler);
			dispatcher.addEventListener( eventMap.shift(), onStatusHandler);
			dispatcher.addEventListener( eventMap.shift(), onErrorHandler);
			dispatcher.addEventListener( eventMap.shift(), onErrorHandler);
		}
 
		private function onBannerLoaded(e:AdMobEvent):void
		{
			Debug.log('Onloaded '+e.type+' > '+e.data);
			dispatchEvent(new ADEvent(ADEvent.AD_LOAD_COMPLETE,e.data));
		}
 
		protected function onStatusHandler(event:AdMobEvent):void
		{
			Debug.log('switchHandler '+event.data+' : '+event.type);
 
			switch (event.type) 
			{	case AdMobEvent.BANNER_AD_OPENED:
				dispatchEvent( new ADEvent(ADEvent.OPEN, AdCore.BANNER ) );
				break;
 
				case AdMobEvent.BANNER_AD_CLOSED:
					dispatchEvent( new ADEvent(ADEvent.CLOSE, AdCore.BANNER ) );
					break;
 
				case AdMobEvent.INTERSTITIAL_AD_OPENED:
					dispatchEvent( new ADEvent(ADEvent.OPEN, AdCore.INTERSTITIAL ) );
					break;
 
				case AdMobEvent.INTERSTITIAL_AD_CLOSED:
 
					if (setupConfig.autocache) adMobManager.cacheInterstitial();
 
					dispatchEvent( new ADEvent(ADEvent.CLOSE, AdCore.INTERSTITIAL ) );
					break;
			}
		}
 
		private function onErrorHandler(e:AdMobEvent):void
		{
			Debug.log('Error '+e.type+' > '+e.data);
 
			switch (e.type) {
				case AdMobEvent.INTERSTITIAL_FAILED_TO_LOAD:
				case AdMobEvent.INTERSTITIAL_LEFT_APPLICATION:
					dispatchEvent(new ADEvent(ADEvent.AD_ERROR,e.data));
					break
 
				case AdMobEvent.BANNER_FAILED_TO_LOAD:
				case AdMobEvent.BANNER_LEFT_APPLICATION:
					dispatchEvent(new ADEvent(ADEvent.AD_ERROR,e.data));
					break;
			}
		}
 
		private function get dispatcher():EventDispatcher {
			return adMobManager.dispatcher;
		}
	}
}
Перед тем как вывести какойнить баннер, система "полу-автоматом" инициализирует, кеширует и если всё ок, только тогда происходит вызов
Код AS3:
iad.show( type ); // iad implements IAd
Старлинг "стартер"
Код AS3:
package net.alexscript.service
{
	import flash.display.Stage;
	import flash.events.Event;
	import flash.geom.Rectangle;
 
	import net.alexscript.worker.Worker;
 
	import starling.core.Starling;
	import starling.events.Event;
 
	public class BaseStarlingService extends Worker
	{
		public static var STARLING_ON_READY:String = 'STARLING_ON_READY';
 
 
		private static var _starling:Starling;
 
		private var stage:Stage;
 
		private var contextCreated:Boolean = false;
		private var rootCreated:Boolean = false;
 
		public function BaseStarlingService()
		{
			super();
		}
		override public function run():void{
			trace('run base');
		}
 
		public function enable(stage:Stage, view:Class):void {
			Debug.log( 'StarlingService enable');
			if (!_starling) {
 
				Starling.handleLostContext = true;
				Starling.multitouchEnabled = true;
 
				_starling = new Starling(view, stage);
 
				_starling.addEventListener(starling.events.Event.ROOT_CREATED, onStarlingEvent);
				_starling.addEventListener(starling.events.Event.CONTEXT3D_CREATE, onStarlingEvent);
				_starling.addEventListener(starling.events.Event.FATAL_ERROR, onStarlingEvent);
 
				_starling.simulateMultitouch = true;
				_starling.antiAliasing = 0;
				_starling.showStats = true;
				_starling.enableErrorChecking = false;
				_starling.start();
 
				this.stage = stage;
 
				stage.addEventListener(flash.events.Event.RESIZE, stage_resizeHandler, false, int.MAX_VALUE, true);
				stage.addEventListener(flash.events.Event.DEACTIVATE, stage_deactivateHandler, false, 0, true);
			}
		}
 
		private function onStarlingEvent(e:starling.events.Event):void
		{
			switch (e.type) {
				case starling.events.Event.CONTEXT3D_CREATE:
					trace("[Main] Starling Context3D created");
					contextCreated = true;
					break;
 
				case starling.events.Event.ROOT_CREATED:
					trace("[Main] Starling root created");
					rootCreated = true;
					break;
 
				case starling.events.Event.FATAL_ERROR:
					trace("[Main] Starling Fatal Error");
					break;
			}
			if (contextCreated && rootCreated)
				this.dispatchEvent( new flash.events.Event(BaseStarlingService.STARLING_ON_READY ) );
		}
 
		public function get starling():Starling {
			return _starling;
		}
 
		private function stage_resizeHandler(event:flash.events.Event):void
		{
			_starling.stage.stageWidth = this.stage.stageWidth;
			_starling.stage.stageHeight = this.stage.stageHeight;
 
			const viewPort:Rectangle = _starling.viewPort;
 
			viewPort.width = this.stage.stageWidth;
			viewPort.height = this.stage.stageHeight;
			try
			{
				_starling.viewPort = viewPort;
			}
			catch(error:Error) {}
		}
 
		private function stage_deactivateHandler(event:flash.events.Event):void
		{
			_starling.stop();
 
			this.stage.addEventListener(flash.events.Event.ACTIVATE, stage_activateHandler, false, 0, true);
		}
 
		private function stage_activateHandler(event:flash.events.Event):void
		{
			this.stage.removeEventListener(flash.events.Event.ACTIVATE, stage_activateHandler);
			_starling.start();
		}
	}
}
Манифест
Код:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<application xmlns="http://ns.adobe.com/air/application/18.0">

	<id>appy.app.Jumper</id>
	
	<filename>Main</filename>
	<name>Jumper</name>
	<versionNumber>1.7.3</versionNumber>
	
	<initialWindow>
		<content>[This value will be overwritten by Flash Builder in the output app.xml]</content>
       	<systemChrome>standard</systemChrome>
        <transparent>false</transparent>
        <visible>true</visible>
        <fullScreen>true</fullScreen>
        <autoOrients>false</autoOrients>
        <aspectRatio>portrait</aspectRatio> <!-- -->
        <renderMode>direct</renderMode>
    </initialWindow>
    
    <customUpdateUI>false</customUpdateUI>
    <allowBrowserInvocation>false</allowBrowserInvocation>
    
	<android>
	    <containsVideo>true</containsVideo> 
        <manifestAdditions><![CDATA[
			<manifest android:installLocation="auto">
			
				<uses-permission android:name="android.permission.INTERNET" />
            	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
           	 	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
            	<uses-permission android:name="android.permission.READ_PHONE_STATE" />
            	<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
				<uses-permission android:name="android.permission.VIBRATE"/>
				
				<uses-configuration android:reqFiveWayNav="true"/>
                <!--<supports-screens android:normalScreens="true"/>-->
                <uses-feature android:required="true" android:name="android.hardware.touchscreen.multitouch"/>
               
                <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="16" />
		         <application android:excludeFromRecents="false" android:enabled="true" android:hardwareAccelerated="true">
		          	<activity android:launchMode="singleTop">
		            	<intent-filter>
		              		<action android:name="android.intent.action.MAIN"/>
		              		<category android:name="android.intent.category.LAUNCHER"/>
		            	</intent-filter>
		          	</activity>
		          	<meta-data android:name="com.google.android.gms.version" android:value="4452000" />
                    <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
		          	<activity android:name="com.jirbo.adcolony.AdColonyOverlay" android:windowSoftInputMode="adjustNothing" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
		          	<activity android:name="com.jirbo.adcolony.AdColonyFullscreen" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
		          	<activity android:name="com.jirbo.adcolony.AdColonyBrowser" android:configChanges="keyboardHidden|orientation|screenSize" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" />
		          	
		        </application>
      </manifest>
		]]></manifestAdditions>
    </android>
    
    <iPhone>
        <InfoAdditions><![CDATA[
			<key>UIDeviceFamily</key>
			<array>
				<string>1</string>
				<string>2</string>
			</array>
		]]></InfoAdditions>
        <requestedDisplayResolution>high</requestedDisplayResolution>
    </iPhone>
    
	<extensions>
	    <extensionID>pl.mateuszmackowiak.nativeANE.properties.SystemProperties</extensionID>
	    <extensionID>pl.mateuszmackowiak.nativeANE.NativeDialogs</extensionID>
	    <extensionID>com.jirbo.airadc.AirAdColony</extensionID>
	    <extensionID>com.admob.ane</extensionID>
    </extensions>
    
</application>
На просторах нашел вот такую конструкцию
Код AS3:
Starling.current.stop(true);
setTimeout(function():void {
	AdManager.getInstance().show();
}, 100);
но результат негативный

Добавлено через 58 минут
Спасибо за внимание. Нашёл траблочку в мейне, два слеша и профит)
Код AS3:
if(Capabilities.cpuArchitecture == "ARM") {
	NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, handleActivate, false, 0, true);
	NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleDeactivate, false, 0, true);
}
 
protected function handleDeactivate(event:Event):void
{
	NativeApplication.nativeApplication.exit();
}
__________________
return this...


Последний раз редактировалось AlexCooper; 03.07.2015 в 16:46.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:08.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 12:08.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.