Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   ЕЩе раз, переменные и IF для работы меню, ХЛПП очень ХЛП (http://www.flasher.ru/forum/showthread.php?t=38516)

Gary 17.10.2002 07:49

ЕЩе раз, переменные и IF для работы меню, ХЛПП очень ХЛП
 
Помогите разобраться наконец, плизззззззз:
Мне надо чтобы клип "меню" проигрался, а затем соответствующий нажатой кнопе клип загрузился.
Я задаю переменные в _root для трех кнопок:

p=false
o=false
i=false

далее, скрипт на кнопку(она у меня мувик):

onClipEvent (enterFrame) {
//присваиваю знаечние переменной в руте
_root.p = true;
this.onRelease = function ()
{
_root.gotoAndPlay ("intro");
//команда на проигрывание мува "меню"
_parent.Play ();
}


ДАлее, в последнем фрейме клипа "меню" пишу:

stop ();
//здесь условие на запуск соответствущего нажатой кнопе клипа
if (_root.p)
{
_root.attachMovie ("tfirst", "tf", 2);
_root.tf._x = 560;
_root.tf._y = 260;
_root.tf._xscale = 90;
_root.tf._yscale = 80;
} else (_root.o)
{
_root.attachMovie ("tsecond", "ts", 2);
_root.ts._x = 560;
_root.ts._y = 260;
_root.ts._xscale = 90;
_root.ts._yscale = 80;
}
Флэш выдает загрузку только одного клипа. При trace(p), например, выдает False даже при нажатой соттветственно кнопке(вроде поменял же значение с FALSE на TRUE) . То есть перемаенная не меняется.
В чем дело? Помогите плиззз. мозги кипят. Плохо тупить!!! :confused:

Max N Chubin_ 17.10.2002 12:33

ты ответы что не читаешь?
 
Дружище, я ж тебе пример скидывал! Чем он тебе не подходит????????
:confused:

ты бы тогда положил свой вариант сюда и люди поправили тебе его..
а то какие то куски кода рисуешь а архитектура клипа не ясна..
давай исходник, наверняка с путями лажа..
или с именами что то же самое

Gary 17.10.2002 17:46

Выкладываю исходник, с надеждой
 
Вложений: 1
МАХ cпасибо за помощь, но я не разобрался с твоим примером к сожалению. Даже написал коммент, да потом отложил. Мне бы хотелось и надо понять принцип т.к. учу я это дело все, а тупо копировать... Анализ не удался пока :)) переменные+условия скрипт перебор для меня. Глянь плиз на исходник. ДУмаю ты прав в путях именах. Да и можно одной обойтись наверно переменной, а ей присваивать значения, так?
Идея такова была. Задал в главной переменную. Ее значение меняю из кнопки(мува). В зависимости от значения загружаю раздел..
Объясни плиз в чем ошибка.

Max N Chubin_ 17.10.2002 19:39

ох. ну и ералаш!
 
Вложений: 1
Слуш, ну я посмотрел твой исходник...
честно признаться я в шоке...
такой каши я не видел никогда.
надо бы тебе почитать о методике объектно ориентированного программирования, потому что дальше будет все труднее и труднее если сейчас не научишься правильно конструировать объекты и использовать одинаковые элементы в различных объектах и т.д и т.п.
В общем я не стал крутить руки твому исходнику, уж больно там много исправлять. Я нарисовал свою менюшку, но делал её по твоей технологии. В общем там происходит то что ты хотел, т.е. в последнем кадре из библиотеки вызывается нужный клип...
в общем на базе этого поиграйся и подумай что дальше буш делать.
все вопросы и подробное объяснение по мылу .

Gary 18.10.2002 18:45

ОтветМах и благодарность, результат
 
Спасибо МАХ. Вы мне помогли, как я и просил с правильностью задачи переменной,
однако вынужден здесь же вам помочь избавиться от шока.

Здесь а не на мэйл, т.к. это прозвучало от вас тоже на доске.Думается самоуничижительный тон не подразумевает
публичного удушения. Для это можно на Flashkit двинуть и на чистейшем английском в разделах по МХ рассказывать им про шок :).

Я просил не комментариев по поводу моих знаний, на это есть мэйл кстати.

Итак, объектно ориентированная модель. Да об этом на каждой странице книжек пишут, известная вещь.
Основываясь именно на этом и делалось меню.
Вы мне настоятельно рекомендрвали кнопки(может пребывая в шоке, вы не заметили очевидного), тогда как у меня функции кнопок возложены на мувики:
открываем (или ручками) левую часть AS развертки: Objects-movie-button-Events. Отсюда и берем:

onClipEvent (enterFrame) {
_root.p = true

this.onRelease = function ()
{
_root.gotoAndPlay ("intro");
_parent.Play ();
};
}
Ну и где здесь, например, каша?Если что не нашли, так я же убрал для компактности лишнее. Может вы в пятом просто работаете? Клипы-кнопки в шестом появились.
Дальше.А почему бы не задать переменной False в _roote, а в кнопках задавать ей True? При проверке IF(...){...}, как известно, если в круглых кобках True,
-то выполняется действие в фигурных {...}. Клип "Меню", где кнопки, проверяет все переменные в руте, значения которым присваиваются в кнопках.
Если значение True - запускаем раздел соотвествующий кнопке, где задали значение True.
Почему вместо одной переменной не задать то количество их, сколько кнопок и проверять их. Коряво? Согласен, можно обойтись одной... и проверять ее значение. А значения могут быть разными, верно?
А вот клип в линкадж называть "1","2","3" как-то... Хотя я так и сделал, согласно примеру вашему.

В итоге коды, благодаря которым мувик меню уезжает наверх с заглавной страницы и согласно нажатой кнопке загружается раздел. И далее меню никуда не "ездит"
находясь наверху, а при нажатии на эти же кнопы, загружаются разделы.
На главной, в руте пишем:
//Это ваша версия
var o="";
//"mm" это клип где кнопки
this.attachMovie ("mm", "mm1", 1);
_root.mm1._x = 450;
_root.mm1._y = 300.1;

на клипе "кнопка" пишем:

stop ();
//Это ваша версия
var o="";
this.attachMovie ("mm", "mm1", 1);
_root.mm1._x = 450;
_root.mm1._y = 300.1;

В последнем кадре "Меню" ("mm" в линкадж) пишем:
stop ();
if (_root.o<>"")//Это ваша версия
{
_root.attachMovie (_root.o, "tf", 2);
_root.tf._x = 560;
_root.tf._y = 260;
_root.tf._xscale = 90;
_root.tf._yscale = 80;
}

Когда меню занимает верхнее место, то на кнопы вешаем просто аттач разделов.


That"s all. Глянуть можно как работает по адресу www.geocities.com/urnimrod в течении трех-четырех дней -теститься. Это набросок!
Спасибо за помощь, но мысли не по делу лучше держать при себе. Есть лохи полные и есть читающие люди. Не так все плохо как тебе кажется по молодости :))
Спасибо за суть. Не спасибо за этику поведения :)))
Удачи!

Max N Chubin_ 18.10.2002 19:30

вот те раз...
 
2 Gary:
однако неприятно, что Вы так отреагировали на мою критику, мне хотелось лишь акцентировать внимание на нескольких по моему важных моментах. Я конечно могу и ошибаться, но у меня сложилось впечатление что Вы все еще очень слабо владеете как AS так и Flash в целом. И мои комментарии здесь никому, кроме Вас не были предназначены. Любой из здесь обитающих имеет своё мнение и может его высказывать, а вы должны быть готовы к этому, раз уж выкладываете своё изделие здесь. Особенно мне не понятна Ваша реакция учитывая Ваш возраст, который вы используете как аргумент своей правоты. Ирония или подколы на этом форуме призваны для разрядки атмосферы и для установления товарищеских отношений. впрочем как и обращение друг к другу на "ты".
Итак к делу. Я внимательно просматривал ваш исходник, но не нашел причины по которой нужно было использовать клип как кнопку. Кнопка это очень полезная вещь как ни крути. Кстати по поводу Вашего высказывания:
Цитата:

Есть лохи полные и есть читающие люди
Вам как читающему должно быть понятно что этом месте конечно же есть каша, целая кастрюля:
onClipEvent (enterFrame) {
_root.p = true

this.onRelease = function ()
{
_root.gotoAndPlay ("intro");
_parent.Play ();
};
}

кроме чтения нужно еще и подумать!
Зачем каждый 12 раз в секунду объявлять для этого клипа функцию реакции на отпускание кнопки? Я уж молчу про несчастную переменную _root.p которая в таком варианте 12 раз в секунду становиться ИСТИННОЙ!
;)
Логично и правильно было бы написать так:
на основном таймлайне, после того как вы сделали atachMovie("mm","mm",1)
написать
_root.mm.onRelease=function{
_root.p = true;
_parent.play ();
}

ну и по поводу IF(){...} - конечно можно сделать и так как вы сказали, но тем и замечательно программирование, что каждый человек решает задачу по своему. И каждое решение имеет право на жизнь, вот только объективные оценки этих решений, такие как скорость, объем, сложность в дополнениях/изменениях - это вещь неумолимая и суровая. Ваш вариант далек от идеального.
Я наверное лох конечно раз трачу время на такие вот послания для знающих и умудренных жизненным опытом людей, но вы не поверите, иногда хочется помочь! В общем, я надеюсь без обид? Ничего оскорбительного в моих словах небыло. Вы же на учителя в школе не обижались когда он вас исправлял?
Успехов!


Часовой пояс GMT +4, время: 16:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.