![]() |
|
||||||||||
|
|
|
|||||
|
Решил добавить рекламный баннер. Приложение на flex 4. Рекомендуют вставлять так:
В результате пишет ошибку TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать ru.spesit.ads.containers.vk::SpesitBanner@49cb849 в mx.core.IUIComponent. atmx.core::Container/http://www.adobe.com/2006/flex/mx/internal::addingChild() atmx.core::Container/addChildAt() atmx.core::Container/addChild() Пробовал и напрямую вставить, и через mx контейнер. Никак... Сам этот SpesitBanner.as package ru.spesit.ads.containers.vk { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.events.IOErrorEvent; import flash.net.URLRequest; import flash.system.ApplicationDomain; import flash.system.LoaderContext; import flash.system.Security; import flash.system.SecurityDomain; /** * Class SpesitBanner ... * @author Yuriy (Mur4ik) Kulkoff * @version 0.1 * @date 06.10.2010 */ public class SpesitBanner extends Sprite { private var _type:String; private var _autoLoad:Boolean; private var _loadURL:String; private var _container:Loader; public function SpesitBanner(bannerType:String, autoLoadBanner:Boolean = true) { Security.allowDomain("http://adv.spes-it.ru/"); _type = bannerType; _autoLoad = autoLoadBanner; mouseEnabled = false; addEventListener(Event.ADDED_TO_STAGE, initInstance); } //============================================================================= //{region PUBLIC METHODS //============================================================================= public function loadBanner():void { switch (_type) { case BannerType.WIDE: _loadURL = 'http://adv.spes-it.ru/swf/containers/vk_570x100.swf'; break; /*case BannerType.RICHMEDIA: _loadURL = 'http://adv.spes-it.ru/swf/containers/vk_430x200.swf'; break;*/ case BannerType.VERTICAL: _loadURL = 'http://adv.spes-it.ru/swf/containers/vk_160x510.swf'; break; case BannerType.USUAL: _loadURL = 'http://adv.spes-it.ru/swf/containers/vk_430x190.swf'; break; default: trace("Неподдерживаемый тип баннера: " + _type); } _container = new Loader(); _container.contentLoaderInfo.addEventListener(Event.COMPLETE, banner_loadCompleteHandler); _container.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, banner_loadErrorHandler); try { _container.load( new URLRequest(_loadURL + "?spesit_pid=" + PartnerConfig.PID + "&spesit_sid=" + PartnerConfig.SID), new LoaderContext(false, ApplicationDomain.currentDomain, SecurityDomain.currentDomain) ); } catch (err:Error) { trace("Local security warning!!! Boooo!"); _container.load( new URLRequest(_loadURL + "?spesit_pid=" + PartnerConfig.PID + "&spesit_sid=" + PartnerConfig.SID), new LoaderContext(false, ApplicationDomain.currentDomain) ); } } //} endregion PUBLIC METHODS ================================================== //============================================================================= //{region PRIVATE/PROTECTED METHODS //============================================================================= private function initInstance(event:Event):void { removeEventListener(Event.ADDED_TO_STAGE, initInstance); if (_autoLoad) loadBanner(); } private function checkSession():void { } //} endregion PRIVATE METHODS ================================================= //============================================================================= //{region EVENTS HANDLERS //============================================================================= private function banner_loadErrorHandler(event:IOErrorEvent):void { trace( "WideShell.banner_loadErrorHandler > event : " + event ); } private function banner_loadCompleteHandler(event:Event):void { addChild(_container.content); } //} endregion EVENTS HANDLERS ================================================= //============================================================================= //{region GETTERS/SETTERS //============================================================================= //} endregion GETTERS/SETTERS ================================================= } } addElement тоже неработает 1067: Неявное приведение значения типа flash.display:Sprite к несоответствующему типу mx.core:IVisualElement Добавлено через 1 час 3 минуты Такой способ ошибки не вызывает, но баннера не видно. var ui:UIComponent = new UIComponent(); var advbanner:SpesitBanner = new SpesitBanner(BannerType.WIDE); ui.addChild(advbanner); ui.x = 95; ui.y = 909; this.addElement(ui); Создал И при инициализации приложения Ошибок и баннера - нет ![]() |
|
|||||
|
ветеран форума
|
Попробуйте не использовать координаты и размеры. Широкий баннер сам подстраивается под размер приложения, и сам автоматом размещается внизу.
Либо посмотрите в метод loadBanner. И напрямую грузите swf по аналогии минуя обертку SpesitBanner. Либо перепишите SpesitBanner унаследовав его не от Sprite, а от SpriteVisualElement или UIComponent или еще от чего либо подходящего. addChild убран для spark контейнеров, для mx он по прежнему, вроде, в силе.
__________________
trace("Остановите Землю, я сойду!!!"); Последний раз редактировалось Mur4ik; 28.01.2011 в 14:44. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|