Просмотр полной версии : Проблема маленьких клипов, работы кнопки в клипе
Решил сделать карту РФ, разбитую на федеральные округа, плюс 4 страны СНГ, при наведении на которые округ/страна увеличиваются, на них появляются города, при клике на которые в свою очередь открываются окна с текстом.
Есть два момента:
1. Изначательный маленькие по размеру клипы (Молдова, Азербайджан) при наведении на них начинают дергаться вместо нормального проигрывания, а если при этом на них кликать, то проиграются, хотя никакой команды на клик вообще не заложено.
2. Никак не могу сообразить как сделать - нужно чтобы когда округ уже увеличился, на ней появилиь кнопки городов, при нажатии на которые так же можно было бы добавить анимацию. Пробовал делать кнопки внутри клипа на последнем фрейме, то есть они как раз появляются когда округ полностью увеличился, все ок, но нажать на кнопку нельзя, анимация, заложенная внутри - не проигрывается. Такое ощущение, что область клипа перекрывает кнопки. При нажатии на кнопку в плане - открытия окна с текстом, которое должно быть по глубине выше всего что есть на экране.
Здесь явно без скрипта не обойтись. Выкладываю исходник. Буду очень признателен, если добрые отцы присоветуют что-нибудь
http://slil.ru/24667154
Кнопки в последнем кадре анимации могут не работать из-за того, что когда код для них назначается, их нет. Назначайте код кнопок там же где они появились
Если я правильно понял что вы имеете в виду, то проблема все таки не в этом. У меня код кнопки в actions самой кнопки.
on (release) {
tellTarget ("/okno") {
gotoAndPlay(2);
}
}
и при нажатии на нее проигрывается клип. Кнопка работает, если ее разместить просто на сцене, я пробую разместить ее на последнем фрейме клипа, в котором она должна появляться - и вот там то она и не работает
chingachgoog
26.07.2007, 16:07
по первому моменту просто - кнопку (горячую область) надо ставить не на увеличивающийся клип. Т.е. ее размеры не должны изменяться.
А я вообще не ставил горячую область - у меня эти маленькие страны - клипы, внутри которых на первом фрейме команда stop, а в actions самого клипа прописана команда при наведении проигрывать этот клип со 2 фрейма
у меня была подобная проблема... когда в мувиклипе (который работал, как кнопка) находилася еще один баттон... и наотрез отказывался работать потому что отрабатывал обработчик именно мувика и блокировал все обработчики кнопки... вроде так и не разобрался как это разрулить... пришлось что-то менять в самой идее..
Так у тебя кнопки в мувике, на который ролловер прописан????
Так не пойдет. Как же плеер определит, жмешь ты на кнопку или на мувик страны? Используй _enabled
не поможет... если ты сделаешь enabled=false мувику в которм кнопка, то она тоже перестанет отвечать...
Может тогда сможете подсказать как лучше реализовать идею? Чтобы при наведении мувик игрался и появляющиеся на нем кнопки работали. Ведь можно же как то так сделать ) Но никак не догоню тему (
можно попробовать, чтобы при наведении на страну появлялся НОВЫЙ мувик (без всяких обработчиков) с кнопками...
но там запара начнется с onRollOut....
Так...появляется новый мувик...проблема с onrollOut...а если при наведении на любой другой мувик давать команду всем остальным идти на фрейм 1, где прописано стоп? В теории получится - навдим на мувик, открывается другой такой же, играет, кнопки работают, потом мы наводим курсор на соседний мувик, он проигрывается и при этом все, включая и тот что уже увеличен - возвращаются к своему первоначальному виду?
у меня затык был такой:
1. навел на маленький мувик - появился большой с кнопками
2. как тоьлко я лезу к кнопкам срабатываем onRollOut и большой мувик исчезает
3. покрутил с hitArea, чтобы при появлении большого мувика его область добавлялась к маленькому - смог по нему перемещаться, но кнопки заблокировались...
chingachgoog
26.07.2007, 19:37
Горячая область у тебя - сам мувик. Мувик увеличивается - увеличивается горячая область - отсюда дрыг.
Надо мувик сделать составным: неувеличивающаяся оболочка, в ней кнопка масштаба, клип который будет масштабироваться.
не понял идеи... можно подробнее..?
chingachgoog
26.07.2007, 19:59
клип Оболочка. Внутри него клипы: Кнопка, Карта.
При наведении на Кнопку увеличивается только Карта, а Оболочка и сама Кнопка не увеличиваются.
Получается ни у кого нет мыслей, как реализовать такую идею?
Еще вопрос - можно ли в последнем фрейме открывающегося мувика дать команду загрузить на главную сцену другой мувик (с кнопками), который будет поверх всего остального по глубине, и не будет соответственно иметь ничего общего с пригрываемым до этого мувиком. Тогда, по логике, кнопки должны работать?
Конечно должны. Только это проблемы роллАУТа не снимает.
Я в подобных ситуациях использовал слежение за координатами, но у тебя страны поди не квадратные :)
вот набросал как можно решить, думаю тебе подойдет сама идея
кнопка в кнопке (http://wolsh.pisem.net/flashcard/but_in_but.rar)
Да и Чингачгук тебе всё правильно говорит
Вся сложность не в том как по наведению увеличить страну и сделать активной кнопку - здесь много способов есть. Проблема в том по какому событию все обратно вернуть.
Определись с логикой, и что-нибудь придумаем :)
chingachgoog: очень хоршо, но когда мы захотим провести мышой по этой карте мы ведь уедем с кнопки... увеличивается она или нет, но ролАут сработает... или я вас не до конца правильно понял
2Ведьмак: во-первых, роллаут сработает если он прописан :)
Роллаут клипа страны сработает при заходе на кнопку-город, т.к. область страны мы покинули - ролл аут. В этом вся и сложность. Необходимо разделить события и их листенеры - клип страны слушает ролловер и увеличивается, после чего перестает чтолибо слушать. А ролл аут не слушает вообще. Далее нужно событие ухода с клипа - страны, но не на кнопки, находящиеся на нем, а только за внешние пределы. Естественно возникает идея еще одного клипа, больше увеличенной страны, при заходе на который клип-страна будет уменьшаться обратно. Поэтому на ролловер страны пишем энаблед этому мега-клипу (для простоты сделаем его размером на весь стейдж, залитый с _альфа=0), и вешаем его ролловер - уменьшать клип страны. Вуаля! А когда анимация уменьшения клипа проиграла до конца - мегаклип энаблед = фальше и всех делов. Можно использовать один мегаклип для всех стран, если его ролловер писать в этих клипах-странах, т.е. он будет меняться в зависимости от страны. Считаю задачу решенной :)
не все поймал "на ухо", нужно попробовать... но думаю это сработает :)
chingachgoog
27.07.2007, 16:11
chingachgoog: очень хоршо, но когда мы захотим провести мышой по этой карте мы ведь уедем с кнопки... увеличивается она или нет, но ролАут сработает... или я вас не до конца правильно понял
Ага. Это я описал решение проблемы только дрожания кнопки.
Проблема нажатия следующей кнопки гораздо сложнее и решается выполнением ряда условий. Например можно сворачивать карту не роллАутом (а хитТестом именно с областью карты), а разворачивать ее именно роллОвером на немасштабируемой кнопке.
Вот абсолютно рабочее решение для одной "страны"
три кнопки в кнопке (http://wolsh.pisem.net/flashcard/But_in_But_01.rar)
Должен честно признать, с наскоку реализовать для двух с одним мегаклипом не получилось - когда мегаклип дизаблится, флэш забывает восстановить некогда закрытые им кнопки, и второй клип остается глухим...
Тут такой подводный камушек - мегаклип приходится поднимать вместе со страной, иначе при уходе со страны ты попадаешь сразу в другую, и первая не уменьшится. Ну а поднятый мегаклип отрубает все что под ним и потом не восстанавливает. Эту проблему решить видимо нельзя но можно обойти, не поднимая мегаклип, а повесив на все кнопки-страны проверку при роллОвере, какая страна сейчас "открыта" - ту и закрыть, а уже потом увеличивать эту. На самом деле поскольку код роллОвера на страну идентичен для всех, вешаться он будет циклом (ну или классом) и "Войну и Мир" писать не придется :)
может разберусь с этим на выходных :)
Всем огромное спасибо за интерес и поддержку =) Ко вторнику мне бы уже закончить эту тему надо, а еще в Питер по работе на выходные заслали :<
Wolsh, отдельное спасибо - из Питера не могу просмотреть файл, но как вернусь сразу засяду - ты уж покопайся как обойти проблему со странами - это я про проверку какая страна открыта и т.д. =) Буду мега благодарен, буду в Новосибирске, проставлюсь =))
ПыСы: Посмотрел клип - в swf файле сто то ничего не происходит при нажатии на кнопочки, в исходнике если тетстить то в окошке появляюстся надписи городов, заложеных в trace. А можно ли сделать, чтобы при нажатии на кнопку проигрывался клип? Я попробовал эти кнопки, которые в принципе и сеть клипы, анимировать, и дать им задание onRelease проигрывать самих себя, но не заработало...
ПыСы2: По сути нужно было чтобы при навелении на кнопку города появлялся некий тескт - сделал из клипов кнопок городов кнопки кнопок городов =))) И внутри на роловер добавил текст. Вроде все пашет. Осталось только разобраться как же все таки сделать так чтобы страны уезжали когда наводим на другую страну, и не забыть, что выезжающая страна всегда должна быть по глубине на первом месте )
Ну держи (мужик сказал - мужик сделал). Всё работает, хотя иногда конечно сбивается если мышкой болтать.
На кнопки ничего кроме трейса не вешал, предполагается что это ты уж сам определишь чего надо делать. Трейсы повешал просто чтоб показать что действия происходят и они индивидуальны. Всякие анимации внутри кнопок и т.д. - другая тема... Делается примерно так - первый кадр с меткой _up - на нем естественно стоп, но в онРоллАут написано гоутуЭндПлэй(2); - и нужная тебе анимация до кадра, скажем, 10. На десятом кадре гоутуЭндСтоп(1). ну или типа того, там разберешься.
Чтобы текст появлялся - ну делаешь это отдельным клипиком, доп. text_Uzgorod_mc и на onRollOver или там onPress кружочка-кнопки пишешь text_Uzgorod_mc.play();
карта из пяти стран :) (http://wolsh.pisem.net/flashcard/intermap.rar)
Да, еще - с поднимающимся вслед за страной мегаклипом можно было сделать, используя _визибле вместо енаблед. Но пока не делал, на досуге попробую, может так безглючней получится.
Ну спасибо!!! =))
Выручил так выручил, по-любому )
Вся тема работает, единственно - только этот "глю" когда мышкой быстро водишь - но тут я даже не знаю как можно по логике поправить, потому что происходит, когда мышку уводишь со страны до того, как она полностью увеличится, и соответственно еще не будет активна команда проверить увеличенность и закрыть страну, если наводим на другую.
Но в целом - идея реализована, за что еще раз огромное спасибо )
Точно. Тогда надо при ролловере страны первым делом дизаблить остальные, а когда она докатиться до увеличенного состояния - энаблить обратно.
Такой еще вопрос в догонку - то, что проигрывается внутри кнопок, в моем случае появляется текст - оказывается как бы за другими кнопками. Попробовал помухоморить с присвоением highest depth на уровне кнопок, но не катит. Можно это как то обойти - или это уже чересчур мудрено
Да зачем же текст внутрь кнопок совать? Я ж говорю - сделай отдельные клипы, расположи их где надо. В первом кадре каждого клипа - стоп (ну и в последнем понятно). Допустим текст у тебя альфой проявляется - значит в первом кадре альфа на тексте ноль и его не видно. На роллОвер соответствующей кнопки пишешь типа
but1.onRollOver = function(){mcText1.play();}
А на онРоллАут - {mcText1.гоутуЭндСтоп(1);}
Если клипы с текстами будут внутри страны, то и подниматься будут вместе с ней, а уж положить клипы НАД кнопками внутри страны ты какнибудь сможешь :)
Да, до этого я уже как раз додумался, все гут.
Осталось теперь разобраться с дизаблом стран при роловере одной из них, пока она не развернется, как ты и сказал. Правда для меня энейбл и дизабл - новые места в ActionScript (как впрочем и многое другое, не сложно догадаться =)) ). Надо попыхтеть, все таки несколько одновременно открывающихся стран - глюк слишком очевидный )
Поменял немного код в первом фрейме сцены и проблема нескольких стран исчезла
function scaleOut(){ // если какая-то страна сейчас "раскрыта"(фрейм 5) - закрываем
for(n=1; n<Num+1; n++){
_root['my'+n+'_mc']._currentframe <= 5 ? _root['my'+n+'_mc'].gotoAndStop(1) : null;
}
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.