![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
создается swf с компонентой List и ее стилями и подгружается в другую. при нажатии на элементы списка в первой флешке не видна обводка вокруг компоненты, а во второй видна. Очень хочется чтобы ее вобще не было. пытался обратится к мувикам из которых состоит компонент и убивать их - почему то не получается. Вероятно потому что обращение идет из класса? обращался примерно так: userlist["boundingBox_mс"](я предпологаю что именно этот мувик - обводка) далее пробовал убить визабилити, альфу, унлоадить или ремувнуть - результат одинаковый. отключаю селектейбл - получаю нужный результат, но пропадает отклик на событие чендж. есть предположения у товарищей знатоков?
|
|
|||||
|
Цитата:
|
|
|||||
|
думаю происходит следующее:
при отрисовке всех этих рамок компонент ищет в _level0 focusManager в исходной флешке он находит его там - все нормально но когда флешка с компонентом подгружена в другую, то найти _level0.focusManager ему уже не судьба - все сбивается если в принимающую флешку вкомпилить этот функционал (достаточно положить в библиотеку любой компонент), то все заработает как закажешь |
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
очень похоже что это действительно как то связано с фокус менеджером. но предложеный способ не работает. можно ли убить его функционал вобще, чтобы точно знать что причина в нем.
|
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
я тоже предполагал этот вариант - нет, рамка бессмертна. внутри класса вложеной флешки создается к тому же собственный фокус манагер - но его я тоже сразу по создании, enabled=false; вот такие фокусы фокус манагера. еще один ньюанс, которому я тоже не нашел объяснения - оказывается даже вложеная флешка отлично работает без всяких рамочек, до тех пор пока не используется видоизмененный хинт (конечно ваш, чей же еще
) на всякий случай выложу тот вариант хинта что юзается у нас. логики в этом я не вижу. закоменчиваем строку body=_root.createEmptyMovieClip("hint",0xFFFFE); пропадают хинты, зато никаких рамочек. class Hint { private static var body:MovieClip; public static var intervalID:Number; private static var tf:TextField; static var hintTextFormat:TextFormat = new TextFormat("_sans", 11, 0xffffff); static var DELAY_OFF:Number=3000; static var DELAY_ON:Number=100; static var bgColor:Number=0x000000; //0x3F4043; static var bgAlpha:Number=80; static var bgRound:Number=10; static var lineWidth:Number=0; static var lineColor:Number=0x646567; static var lineAlpha:Number=null;//70; static var topPadding:Number=0; static var leftPadding:Number=5; static var dragEnable:Boolean; static function show(s:String,timeOut:Number,dragable:Boolean):Void { if(!s){ clear(); return; } dragEnable=dragable; body.removeMovieClip(); clearInterval(intervalID); intervalID=setInterval(Delegate.create(Hint,create),DELAY_ON,s,timeOut,dragable); } static function create(s:String):Void{ body=_root.createEmptyMovieClip("hint",0xFFFFE); body.filters=[new DropShadowFilter(2,45,0,0.2)]; body.onEnterFrame=null; body.clear(); body._txt.removeTextField(); tf=body.createTextField("_txt",0,leftPadding,topPadding,0,0); tf.text=s; tf.setTextFormat(hintTextFormat); tf.autoSize=true; tf.selectable=false; //tf.border=true; // tf.borderColor=frameColor; var w=body._width, h=body._height; RectDraw.drawRounded(body, w+leftPadding*2, h+topPadding*2, 5, bgColor, bgAlpha, lineWidth, lineColor, lineAlpha); var m=_root._xmouse+body._width +10> Stage.width; body._x=int(_root._xmouse+(m?-body._width-5:10)); body._y=_root._ymouse-10; clearInterval(intervalID); intervalID=setInterval(Delegate.create(Hint,clear),DELAY_OFF); body.onMouseMove=Delegate.create(Hint,drag); body._alpha=100; } static function drag():Void { body._alpha-=1; //trace(body._alpha); if(!dragEnable&&body._alpha<90){ body.removeMovieClip(); } //body._y=int(_root._ymouse-10); //var m=_root._xmouse+body._width +10> Stage.width; //body._x=int(_root._xmouse+(m?-body._width-5:10)); } static function clear(smooth:Boolean):Void{ clearInterval(intervalID); if(smooth){ body.onEnterFrame=Delegate.create(Hint,fade); }else{ body.removeMovieClip(); } } static private function fade(){ body._alpha-=50; if(body._alpha<=0){ body.removeMovieClip(); } } } |
|
|||||
|
так это в ту же тему, имхо
focusManager акурат на глубине 1048574 (0xFFFFE) и создается, создавая там же болванку для хинтов, убиваем focusManager со всему вытекающими последствиями, т.е. нормальная работа всех этих компонентовских приблуд уже невозможна.. создавай хинт на 0xFFFFB и все будет работать при подгрузке немного по другому, но с тем же результатом, компонент просто не может создать focusManager (не из чего), если в библиотеку положить какой-нбудь компонент, то все будет штатно.., скорее всего, может быть ![]() зы: а лучше забыть эти компоненты v2 как страшный сон и работать в AS3 ![]() ззы по поводу focusManager.enabled=false; - в флешке с самим компонентом, если она полгружается, это ничего не дает - focusManager создается в _level0 плеера, т.е. в руте загружающей флешки это и надо писать Последний раз редактировалось silin; 14.05.2009 в 17:02. |
|
|||||
|
Регистрация: Nov 2008
Адрес: Москва
Сообщений: 92
|
спасибо большое
ура! заработало, теперь все стало ясно. вот на такие мелочи и тратится больше всего времени. если бы начальство решилось переделывать исходники на ас3 я бы руками и ногами был за. Еще раз спасибо. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|