Просмотр полной версии : Компонент List v2. Убить обводку
создается swf с компонентой List и ее стилями и подгружается в другую. при нажатии на элементы списка в первой флешке не видна обводка вокруг компоненты, а во второй видна. Очень хочется чтобы ее вобще не было. пытался обратится к мувикам из которых состоит компонент и убивать их - почему то не получается. Вероятно потому что обращение идет из класса? обращался примерно так: userlist["boundingBox_mс"](я предпологаю что именно этот мувик - обводка) далее пробовал убить визабилити, альфу, унлоадить или ремувнуть - результат одинаковый. отключаю селектейбл - получаю нужный результат, но пропадает отклик на событие чендж. есть предположения у товарищей знатоков?
Компонент List v2. Убить обводку
Она бессмертна..(
думаю происходит следующее:
при отрисовке всех этих рамок компонент ищет в _level0 focusManager
в исходной флешке он находит его там - все нормально
но когда флешка с компонентом подгружена в другую, то найти _level0.focusManager ему уже не судьба - все сбивается
если в принимающую флешку вкомпилить этот функционал (достаточно положить в библиотеку любой компонент), то все заработает как закажешь
очень похоже что это действительно как то связано с фокус менеджером. но предложеный способ не работает. можно ли убить его функционал вобще, чтобы точно знать что причина в нем.
focusManager.enabled=false;
не проверял, но предполагаю, что нужно в обоих флешках
я тоже предполагал этот вариант - нет, рамка бессмертна. внутри класса вложеной флешки создается к тому же собственный фокус манагер - но его я тоже сразу по создании, 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 плеера, т.е. в руте загружающей флешки это и надо писать
спасибо большое:) ура! заработало, теперь все стало ясно. вот на такие мелочи и тратится больше всего времени. если бы начальство решилось переделывать исходники на ас3 я бы руками и ногами был за. Еще раз спасибо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.