Просмотр полной версии : после ComboBox-a неработает ничего
проблема:
делаете новый файл. В него кладете combobox. Никакого скрипта и имени даже пока ненадо. Рисуете яшик, F8-кнопка. теперь напишем ей
on(release) {trace("pressed");}.
Если один раз опустить combobox, то после етого на кнопке trace неработает если мышью не шевелить.
Ето офигенный баг или какимто образом фиксится??
листенеры change и dropdown._lockroot = false недают ничего.
1 ) на этом форуме, запрещается юзать пятерочный синтаксис для версий плеера 6 и выше( а вы юзаете).
2) юзаем вместо него onRelease
3) у меня все работает
//рисуем ComboBox
import mx.controls.ComboBox;
var cb:ComboBox = createClassObject(ComboBox,"ComboBox",2,{dataProvider:["hello","morining","afternoon","evening","hi"]});
//рисуем кнопку
var button:MovieClip = drawSquare(0,0,100,100,this);
button._y = 50;
button.onRelease = function ():Void
{
trace(this);
}
//ComboBox лучше расположить выше кнопки
button.swapDepths(cb);
//метод который рисует кнопку
function drawSquare(x:Number,y:Number,w:Number,h:Number,parent:MovieClip):MovieClip
{
var d:Number = parent.getNextHighestDepth();
var result:MovieClip = parent.createEmptyMovieClip("mc"+Math.round(Math.random()*100)+d,d);
result.beginFill(0xFF6600);
result.moveTo(x,y);
result.lineTo(x,y+h);
result.lineTo(x+w,y+h);
result.lineTo(x+w,y);
result.lineTo(x,y);
result.endFill();
return result;
}
PS для того чтобы расположить компонент программно, он все равно должен быть в библиотеке.
неделает никакой разницы.
movieclip.onRelease = function() {trace("aaa");}
все остается точно также. програмно кнопка нарисована или нет неимеет значения, и данный синтаксис тут не причем.
кидаю файл.
все остается точно также. програмно кнопка нарисована или нет неимеет значения, и данный синтаксис тут не причем.
кидаю файл.
я не говорил что виноват синтаксис, я сказал что в данном разделе его использование запрещенно.
кстати, твой скрипт как раз тоже не работает.
нажми 5 раз на кнопку - каждый раз будет trace. теперь опусти и закрой dropdown. нажми НЕ ШЕВЕЛЯ мышю еше раз 10 на кнопку. trace будет только первый раз.
2 Nirth
И в твоем примере тот же баг. Главная фишка в том чтобы после открытия комво навести на мувик и НЕ смещая мышку ни на пиксель в стороны, просто кликать (мувик перестает "отвечать").
Локализация бага показала что проблема в маскировании, а точнее в маске, котороя создается единожды при первом дроп дауне.
Местоположение локализации примерно 232 строка
функции getDropdown() класса mx.controls.ComboBox
"__dropdown.setMask(mask);"
При комментировании строки клип нормально отвечает, но компонент
естественно работает не корректно... :)
PS Возможно все несколько глубже, буду рад если кто-нибудь раскопает...
вообще в флэше мышка не всегдка корректно работает, скажем если убрать кнопку из под мышки, она только на слейдующем движении сообразит что она уже не на кнопке.
Баг увидел, я так понимаю это из за выезжающего меню. В принципе вполне логично, компоненты разрабатывались для работы вместе
//рисуем ComboBox
import mx.controls.*;
var cb:ComboBox = createClassObject(ComboBox,"ComboBox",2,{dataProvider:["hello","morining","afternoon","evening","hi"]});
//рисуем кнопку
var btn:Button = createClassObject(Button,"Button",1,{label:"Click Me"});
btn.move(0,50);
function traceMe(evt:Object):Void {
trace(this);
}
btn.addEventListener("click",traceMe);
Все работает. Внешний вид кнопки так же можно настроить, правда сложнее.
2KPaul
править классы компонентов, я бы не назвал мудрым =)
но ведь дело не только в компонентах.
если компонент некорректно работает с обычными мувиклипами, ето баг...
у меня сотни всяких драг-дропов мувиклипов, даблкликов на мувиклипы и т.п.
просто я думал, мож ктонибудь или макромедиа в таком случае выложили исправленную версию :)
Вообщето если честно, эти компоненты были написанны для Flex 1.0-1.5, где вообще все что есть на сцене - компоненты, а в флэш их добавили, скорее как бонус, мое имхо - они должны были предупредить, есть вариант - юзать компоненты из Flash MX их можно достать на adobe exchange (http://www.adobe.com/cfusion/exchange/index.cfm?view=sn110), у меня была ссылка но найти сейчас не могу
а можно ли использовать MX-combobox?
чтото у него неработает ни changeHandler ни change listener под player>6
При первом приближении в текущей ситуации может помочь
следующий код:
but._focusrect = false;
but.onPress = function(){
Selection.setFocus(this);
trace("pressed");
}
Такая фишка вроде не только с комбо. Дело в том, что компонент не отдает фокус ни кому другому. (Нужно его отобрать) :( Такая проблема оказывается была еще в 2004 году правда преимущественно с TextArea.
Flash MX Components for Flash MX 2004 (http://www.adobe.com/cfusion/exchange/index.cfm?view=sn110#view=sn106&viewName=Exchange%20Search%20Details&loc=en_us&authorid=60639501&page=0&scrollPos=0&subcatid=0&snid=sn106&itemnumber=20&extid=1009423&catid=0)
Они кстати весят меньше
Насчет событий, компоненты MX имеют на удивление идеотскую событейную модель
var dataProvider:Array = new Array();
dataProvider.push({label:'Lisa',data:1});
dataProvider.push({label:'John',data:2});
dataProvider.push({label:'Aj',data:3});
myComboBox.setDataProvider(dataProvider);
myComboBox.setChangeHandler("onChange",this);
function onChange(component)
{
trace(component.getSelectedItem().label);
}
с другой стороны ComboBox v2 весит 55 килобайт а ComboBox из Flash MX 13 килобайт.
дык в том и проблема :) етот скрипт (setChangeHandler) с етим компонентом работает под 6 плеером, а надо 7 как минимум. В нем ни setChangeHandler, ни change listener больше неработают.
всем спасибо, буду использовать вариант КPaul, с отбиранием фокуса.
у меня это в восьмом работает
msvcrtdll
05.11.2007, 01:14
есть новости по проблеме?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.