Просмотр полной версии : Сделал меню, но оно ведет себя странно...
GreatRash
15.08.2007, 13:23
Вобщем сделал менюшку: при наведении на кнопки они плавно загораются, а при отведении мышки - плавно тухнут. Все вроде бы нормально, но если двигать мышку быстро, то меню начинает работать совершенно наоборот.
Допустим я плавно спокойно навел на кнопку курсор - она плавно загорелась и когда я его убрал плавно погасла.
Потом я навел курсор резко (ведь юзер не будет плавно мышкой водить) - кнопка загорелась как надо, но после того как я так же резко убираю курсор кнопка остается зажженной :o
Если я наведу курсор на кнопку снова, то она погаснет (причем не плавно, а резко), и наоборот если отведу то она зажжется (тоже резко)...т.е. меню работает наоборот...
Объясните пожалуйста что я не так делаю.
код:
function rollUP() {
this.gotoAndPlay(1);
}
function rollDOWN() {
this.gotoAndPlay(5);
}
function releaseOUT() {
this.gotoAndPlay(5);
}
but1_mc.onRollOver = rollUP;
but1_mc.onRollOut = rollDOWN;
but1_mc.onReleaseOutside = releaseOUT;
but2_mc.onRollOver = rollUP;
but2_mc.onRollOut = rollDOWN;
but2_mc.onReleaseOutside = releaseOUT;
but3_mc.onRollOver = rollUP;
but3_mc.onRollOut = rollDOWN;
but3_mc.onReleaseOutside = releaseOUT;
but4_mc.onRollOver = rollUP;
but4_mc.onRollOut = rollDOWN;
but4_mc.onReleaseOutside = releaseOUT;
but5_mc.onRollOver = rollUP;
but5_mc.onRollOut = rollDOWN;
but5_mc.onReleaseOutside = releaseOUT;
but6_mc.onRollOver = rollUP;
but6_mc.onRollOut = rollDOWN;
but6_mc.onReleaseOutside = releaseOUT;
Кстати у меня Flash MX 2004
GreatRash
15.08.2007, 17:33
В кнопках разобрался...всем спасибо за помощь :D
Возник такой вопрос: а можно ли менять размер флэша в зависимости от того сколько кнопок в нем?
GreatRash
15.08.2007, 17:39
А как это? Как я узнаю сколько кнопок создалось? Они у меня циклом создаются...
Я вот поэтому уроку делаю: http://www.intuit.ru/department/internet/flashmxstudio/15/4.html
А складывать общую высоту в цикле нельзя что-ли?
GreatRash
15.08.2007, 17:50
Хм... логично, (правда у меня ширина, но это не важно) сам бы не догнал наверное. Только вот не понятно, что дальше делать с какого боку JS применять? Передавать в него значение общей ширины (допустим 200 px), а потом чего? Т.е. разве с помощью JS можно размер флэша изменить (я имею ввиду не размер в HTML, а размер самого ролика)
Я говорил про изменение размера блока div в html, содержащий флешку. С обычным Standalone Flash Player этого сделать невозможно.
GreatRash
15.08.2007, 19:11
Жаль...
я вот тут поиск по форуму поюзал и нашел такую вещь как Stage.width, она тоже не будет работать?
Это свойство только для чтения.
GreatRash
15.08.2007, 19:24
Понятно, спасибо за помощь.
Кстати, почему когда меняется ширина дива (скриптом), а у флеша, вложенного в див стоят размеры 100%х100% обрезается кусок клипа (левый - там где координаты 0px 0px)? Причем хорошо так обрезается пикселей на 100... а в Мозилле вообще размеры дива не меняются :(
стоит свойство Stage.scaleMode = "noScale";
Molecula
15.08.2007, 19:50
Ну это уже по вёрстке вопросы пошли...у броузеров свои причуды.
У тебя наверно флэшка в центре дива поставлена?
Я вот так делал флв-плеер, меняющий размеры в зависимости от фильма без перезагрузки страницы (флэшка вставлена стандартным SWF Object):
В мозги пишем прелюдию и заодно саму функцию автосайза
<script type="text/javascript">
var MSIE = false;
</script>
<!--[if IE]>
<script type="text/javascript">
var MSIE = true;
</script>
<![endif]-->
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
function getFlashElement (id) {
return MSIE ? window[id] : document[id];
}
function toFlash (addr) {
var flash = getFlashElement("player");
flash.SetVariable('mov', addr);
}
function autosize(w,h){
DI = document.getElementById('flashcontent').style;
//DI=flashcontent.style;
DI.width=w;
DI.height=h;
};
</script>
Вставляем флэшку
<div id="flashcontent" style="overflow: hidden;">
тута типа флэшка будет щас
</div>
<script type="text/javascript">
var so = new SWFObject("tvplayer3.swf", "player", "640", "510", "#ff0000");
so.addParam("wmode", "transparent");
//so.addVariable("mov","gta.flv");
so.write("flashcontent");
</script>
И например такие ссылки на фильмики, которые флэшка будет показывать, ресайзясь под их размер
<a href="javascript: toFlash('NEW_MIF.flv');">NEW_MIF</a>
. . . . . . .
<a href="javascript: toFlash('fantasy.flv');">Final Fantasy</a>
. . . . . . .
<a href="javascript: toFlash('nemogot.flv');"> B~G </a>
. . . . . . .
<a href="javascript: toFlash('romar.flv');">BloodRayne</a>
Ну а функцию автосайза вызываем из флэша, когда станут известны размеры кина :)
w = my_video._width;
h = my_video._height;
getURL("javascript: autosize("+w+", "+h+");");
Надеюсь, найдешь параллели и эти наработки тебе пригодятся :)
GreatRash
16.08.2007, 11:50
JS выдает ошибку: "SWFObject - определение отсутствует"
А скрипт swfobject.js лежит рядом с флешкой?
GreatRash
16.08.2007, 13:44
Нет, а что это за скрипт?
http://noregret.org/tutor/swfobject/
GreatRash
16.08.2007, 14:19
Все заработало, только это все равно не то...
Этот метод просто вставляет в див флешку, а то что не поместилос обрезает с помощью overflow: hidden;
Во-первых в мозилле ничего не обрезается...
Во-вторых можно было бы и без этого скрипта (SWFObject) сделать...
Ну а в-третьих это все равно не то, что я хотел.
Но все равно всем спасибо, кто помочь пытался. Я много нового почерпнул.
Да просто в точности то, что нужно Вам, в принципе не реализуемо. Единственный параметр, отвечающий за размер окна - только для чтения.
Поэтому всё что можно сделать - менять размер сцены ВНУТРИ некоего большого окна, прижав сцену влево вверх, а оставшееся пустое пространство обрезать дивом... Здесь - реализация этого способа "на лету", т.е. в любой момент времени Вы можете сделать видимую флэшку любого размера. Буду искренне рад, если кто-то предложит другой вариант, т.к. этот действительно не работает в ФФ, непонимающем overflow: hidden :(
______________________
загрузка нового клипа в _root меняет размер окна, но не знаю как Вы сможете этим воспользоваться :) все что было в вашей свф до этого, погибнет. Загрузка же loadMovieNum (на другой уровень) никак на размер окна не влияет.
Molecula
16.08.2007, 14:46
Напишите свой плагин к флешу, что б сцена резайзилась и не мучайтесь.
GreatRash
16.08.2007, 16:54
2Molecula смешно...если я в AS не шарю толком, куда уж мне плагины писать.
2Wolsh очень жаль, что Мозилла не понимает overflow: hidden; Просто задумка была меню разместить по центру экрана, но, видимо, придется сделать слева/справа или кнопки вниз дублировать...
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.