Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Открытие страницы по кнопке (http://www.flasher.ru/forum/showthread.php?t=100275)

Opinio 23.08.2007 14:55

Открытие страницы по кнопке (не выходит)
 
Делаю уже не знаю какой раз. На остальных кнопках работает, а на этой нет.
Пишу:
Код:

on (rollOver) {
                this.gotoAndPlay("over");
}
on (releaseOutside, rollOut) {
                this.gotoAndPlay("out");
}
on (release) {
        loadMovieNum ("soc.swf", 1)
}

А мне в ответ:
Код:

**Ошибка** Символ=button copy 4, слой=Layer 4, кадр=1:Строка 1: Mouse events are permitted only for button instances
    on (rollOver) {

**Ошибка** Символ=button copy 4, слой=Layer 4, кадр=1:Строка 4: Mouse events are permitted only for button instances
    on (releaseOutside, rollOut) {

**Ошибка** Символ=button copy 4, слой=Layer 4, кадр=1:Строка 7: Mouse events are permitted only for button instances
    on (release) {

Общее количество ошибок ActionScript: 3          Сообщенные ошибки: 3

Почему на остальных кнопках это работает, а здесь нет? Кнопку надо переделать или что?:o
Спасибо

P.S. Если я правильно поняла сообщение, то я что-то напортачила с кнопкой, но что?

Wolsh 23.08.2007 16:28

В Publish Settings поставили пятый плеер. В пятом плеере такой код можно было писать только на кнопки (Button), нельзя на клипы
Если это у Вас кнопка (другие же както работают), то возможно, Вы случайно поменяли тип этого экземпляра. На панели свойств (внизу экрана) в левом верхнем углу в селекторе должно быть написано Button а не Movie Clip

Opinio 24.08.2007 00:20

У меня русифицированный.
Пишет: "кнопка" и в центре "отслеживать как кнопку", но при этом все таже ошибка.
Попробовала на всякий случай настройки публикации поменять на разные версии, но таже ошибка.
А остальные как работали, так и работают (тьфу-тьфу-тьфу)! Чудеса...:o

udaaff 24.08.2007 00:55

Выложи исходник.

Opinio 24.08.2007 01:29

Оппа. Вложение 17530
Как-то так.:o
Проблема с button4, как я понимаю, остальные нормально работают.

Wolsh 24.08.2007 01:45

Ага. Надо зайти в этот самый button copy 4 и удалить нафиг скрипт, который висит в кадре. Вы его по-ошибке туда впастили, точно такой же висит на кнопке (где ему и место), а этот удалите.
---------
честно сказать, я бы еще замечаний 80 сделал (даже не по скрипту) но это как хотите.

Opinio 24.08.2007 01:52

Действительно!
Wolsh, udaaff - спасибо Вам огромное!:mosking:
---------
Wolsh, я согласна на 80 замечаний (если Вам это легко).
Это, скажем так, я только учусь, и буду рада любым комментариям, чтобы на потом и сейчас получалось лучше!

Wolsh 24.08.2007 23:29

ОК, тогда начнем.
1) Transmatika: Исходная картинка (битмап) значительно больше видимой. Вы ее ужали инструментом Free Transform. В результате - искажения.
2) Картинка больше - она больше весит. Сделайте того размера, что Вам надо - избавитесь от искажений и уменьшите вес конечного файла. Если в данном случае Вам это кажется некритичным, то при создании банера, например, Вам пришлось бы отказаться от чего-то еще, чтобы влезть в размер файла. Приучите себя по-минимуму искажать картинки, только если требуется анимация увеличения-уменьшения, и всегда готовить картинки требуемого размера, а не доводить его во флэше.
3)Если всеже есть такая необходимость искажать картинку, ставьте галочку Allow smoothing (Разрешить сглаживание) в свойствах картинки (правый клик на картинке в библиотеке - Свойства). *В шестом плеере (кажется) не работает.
4)Нелепо писать на битмапе для флэша простой плоскоцветный текст. Флэш сам неплохо пишет текст. При этом его вес в разы меньше того, что на битмапе, и остается возможность как угодно его редактировать - перемещать, раскрашивать, менять шрифт. Обратите внимание - если Вы уберете с картинки текст и оставите только фон, то сможете сохранить картинку в фотошопе с качеством, близким к нулю - и она не будет выглядеть убитой при весе в несколько килобайт. Если у Вас подобный текст на картинке - Вы вынуждены ставить высокое качество джипега, чтобы избежать искажений на контрастных линиях. Увеличение веса минимум в 10 раз гарантировано.
5)Если брать Ваш случай, то и линейные размеры фона можно сократить раз в пять и замостить прямоугольник полученным сэмплом - там всёравно только рельефный шум. Рисуете во Флэш прямоугольник и выбираете тип заливки битмап. Вам предложат на выбор те картинки, что есть в библиотеке. Если выбранная картинка меньше прямоугольника, она будет механически повторена (как делают фон на хтмл-страницах). Так что Вам хватило бы квадратика 50х50 с этим шумом, а это меньше килобайта. *Возможно понадобится его доработать в фотошопе чтобы края сливались без видимых границ.
6)Непонятно, зачем было делать из этого мувиклип. Никакие свойства мувиклипов Вы с этой картинкой не используете. Но, возможно, собирались использовать в будущем ;)
8) Оранжевый прямоугольник.Такой градиент легко делается во флэш и весит ну просто космически меньше, оставляя, опять же, простор для редактирования.

В библиотеке полный бардак.
8) Зачем Вам четыре одинаковых битмапа (стрелочка)? На то она и библиотека, что одну книжку там могут читать все. Одну стрелочку Вы можете использовать где угодно, просто затащив ее на поле из библиотеки.
9)Вам пришлось сделать четыре копии СИМВОЛА кнопки, совершенно идентичных, за исключением одной строчки в коде. Эту ситуацию изжили в 2000 году, когда перестали писать код на кнопках и появился Action Script. Лет через пять этот пережиток вообще перестанут поддерживать, а сейчас на этом форуме Вам каждый напомнит, что так писать нельзя. Очень плохо развивать в себе привычку, от которой, поверьте, Вам однозначно придется отказаться. Это прошлый век и мертвый язык, очень ограниченный по своим возможностям.
Давайте так. Представьте себе три спичечных коробка. Вы кладете в каждый по записке - 1. В этот коробок класть пугафки, 2. В этот коробок класть булафки, 3. В этот коробок класть наперстки. После этого Вам даже чтобы узнать, в каком коробке чего лежит, надо все эти коробки открыть и прочитать записки. И так каждый раз. А теперь второй вариант - три коробка, на каждом написан номерок, а на стене висит листочек: в коробок 1 класть пугафки, в коробок 2 класть булафки, в коробок 3 класть наперстки. Наперстков оказалось мало - подписали - и бусинки. Почувствуйте разницу.

Opinio 25.08.2007 22:40

Wolsh, спасибо большое. Я постараюсь сделать по-другому.
Скажу честно, это первое, что я делаю во Флеше, поэтому, наверно, и такие проблемы.
А если не секрет: это всё или ещё можно как-то прокомментировать?
P.S. Сделала копию Вашего сообщения. :D

Wolsh 26.08.2007 01:59

Для первого раза совсем неплохо (впрочем я не верю что это первое :) может быть первое в смысле проекта). Но я обещал 80 замечаний, так что по закону льва Иван Иваныча должен хотя бы 40 сделать. Так что продолжим, пожалуй. Не забудьте откомментировать, чтобы я мог продолжить - два сообщения подряд на этом форуме не приветствуются, а собирать в одну "портянку" неэстетично.
10) В библиотеке позволяется не только создавать папки для удобной сортировки символов, их можно также переименовывать, давая "говорящие" названия - такие, по которым Вы сразу сможете глазами найти то, что Вам нужно. Ориентироваться в библиотеке, где все называется "Символ 23", просто невозможно. Назовите все по-человечески, можно даже по-русски, и Вам самой станет легче.
11) Зацикливание анимации. Симбол 51 - шкала эквалайзера.
Вы пытались сделать непрерывно двигающиеся столбики, и чтобы они к концу цикла принимали то же положение, что и вначале, Вы скопировали первые кадры в последние. Ошибка в том, что теперь у Вас при непрерывном проигрывании два последовательных кадра - одинаковые. Возникает как бы задержка. Может быть для музыки это означает ритм, но в других ситуациях (а они бывают очень часто) такой номер не пройдет. Что нужно сделать? Сделать теперь предпоследние кадры последними. Выделить их и конвертировать в ключевые, потом удалить последние. Так Вы получите непрерывный цикл. Не спешите это делать, прочитайте п.12
12) Вам нужно, чтобы сначала эти столбики не двигались, а включались когда заиграет музыка. Вы поставили stop() в первом кадре, но тогда столбики играют только один цикл, и стоп Вы удалили, сделав вместо этого еще один - статичный - мувик из одного кадра. Нужно было всего-лишь в последнем кадре поставить команду gotoAndPlay(2);
и цикл стал бы непрерывным. Переделывать предпоследние кадры в последние при этом, понятное дело, не надо.
13) Еще грамотней эту ситуацию решить с помощью скрипта. Помните про коробки и листочек? Сейчас у Вас везде код в коробках. И этот стоп() создает столько проблем именно поэтому. Можно было просто дать всему этому клипу имя (на панели свойств - внизу окна - в правом углу есть поле для ввода этого имени, когда экземпляр находится на стейдже и выделен) - напр. scala_mc. И тогда в кадре (не внутри коробка, а снаружи) пишете scala_mc.stop(); Это его начальное состояние. Когда будет нужно, чтобы столбики забегали, скомандуйте scala_mc.play();
Вот так всё просто. Но кадры-таки придется переделать.
14) Статичный мувик, который я упоминал, Вы создали странным способом. Вы сделали дубликат Символа 51 и удалили все кадры с анимацией, оставив только первые. Можно было затащить Символ 51 на стейдж и нажать Ctrl+B (разбить). Получится простой однослойный шейп из первого кадра. Этот прием Вам сто раз пригодится в будущем.
15) Copyright ©Transmatika.com
Значек © и означает Copyright. Что-то одно здесь лишнее. Иногда пишут Copyrights: ©My Fazer '1993, ©My Mazer '1993 Т.е. в случае перечисления правовладельцев это уместно как заголовок списка, но не более.
16) Этот копирайт у Вас тоже в отдельном мувике. Так и не понял - зачем?
17) Видите какой он ломаный? Вы сделали Динамическое текстовое поле. Это такой тип поля, в котором текст ВЫВОДИТСЯ скриптом динамически. Т.е. подсчитали например, что два арбуза плюс три получается пять - вывели 5 в динамическом текстовом поле. Оно для результатов вычислений. Поскольку неизвестно заранее, какие символы там будут отображаться, а шрифт, содержащий ВСЕ возможные символы, довольно много весит, считается что данные в этом поле будут отображаться тем шрифтом, который есть на компутере пользователя. Поэтому по-умолчанию в таком поле шрифт не сглаживается, т.к. чтобы сгладить букву, флэшу надо преобразовать ее в свой вектор. Такое возможно только в Статических текстовых полях, когда буквы известны до компилляции. Они преобразуются в векторные картинки-шейпы. Именно такой тип поля Вам и надо было выбрать в этом случае. Статический.
18) Однако и в динамическом поле можно показывать сглаженный текст при определенных условиях. Если Вы заранее знаете, что там будут, например, только цифры, Вы можете указать Флэшу включить эти символы в конечный файл, и при компилляции будут созданы 10 шейпов цифр того шрифта, который Вы указали, и только в том начертании, какое Вы указали для этого поля в инспекторе свойств. Т.е. жирное или наклонное - вы не сможете поменять их в ходе работы флэшки. Только один вариант начертания навсегда. Зато на любом компьютере это будет выглядеть одинаково. У меня, например, нет на компе Гельветики.
Для указания, какие символы надо включить для этого поля, нажмите кнопочку Embed (не знаю как в русском переводе назвали).
19) Практически все элементы в Вашем проекте не установлены "в ноль".
Пока двигаешь все руками, это не вызывает особых проблем, разве что картинки могут показываться "битыми", шрифты - ломаными, мелкие векторные рисунки - расплывчатыми, а линии - как будто двойными. У всего этого одна причина - при показе на экране изображение в принудительном порядке становится растровым - состоит из маленьких прямоугольничков-пикселей. Эти пиксели - атомы изображения, и делиться больше уже не могут. Выражение "на пол-пикселя влево" - это юмор такой. Полпикселя не бывает. Но только не во Флэше.
Флэш - векторная программа, предполагающая свободное масштабирование. Здесь координата или ширина прямоугольника 250.17 пикселя - обычное дело. Но если Вы хотите, чтобы все линии в вашей флэшке были четкими, ставьте только целые координаты. Тогда при отображении Флэш не будет подрисовывать к линии еще одну полупрозрачную, пытаясь показать, что она на пол-пикселя левее ;)
20) Выражение "ставить в ноль" означает также, что внутри вложенных клипов основной элемент должен иметь координаты х=0.0 и у=0.0
Причину Вы поймете, как только начнете что-либо двигать не руками, а скриптом. Т.е. когда Вам действительно станут нужны координаты ваших объектов. Если у Вас в клипе my_mc нарисован прямоугольник, Вы само-собой предполагаете, что написав в скрипте my_mc._x = 10, my_mc._y=10, увидите прямоугольник в левом верхнем углу с отступом 10. Однако, если Вы не позаботились поставить этот прямоугольник в ноль внутри клипа my_mc, то увидите его совсем в другом месте (а может и вовсе не увидите) Развивайте привычку ставить в ноль, она - правильная.

Opinio 29.08.2007 19:23

Уважаемый Wolsh!
Со всей отвественностью заявляю, что это вообще первое, что я сделала во Flash. До этого даже мелких мувиков не было. :rolleyes:
По поводу копирайтов и столбиков это я сразу осилю, а вот с остальным пока буду осмысливать.
Продолжайте, пожалуйста. :victory:
P.S. Писала в личку - аси нет. Не пользуюсь. ;)

Aisaid 30.08.2007 16:07

Wolsh
топик уже перерос тему, его стоит назвать "пособие начинающим" ;)
спасибо, тоже много интересного понял
кстате, не многие начинающие начинают с литературы по флешь, а зря...

iNils 30.08.2007 18:05

Цитата:

два сообщения подряд на этом форуме не приветствуются
В данном случаи можно. По 10 в каждом.

Пункт 11:
Не надо удалять последний кадр, вдруг вы захотите удлинить анимацию? Опять придется копировать первый кадр в последний, смещать и удалять. Надо просто в последнем кадре написать
Код:

gotoAndPlay (1)
Тогда будут проигрываться все кадры с первого до ПРЕДпоследнего. Так как код срабатывает раньше, чем происходит отрисовка кадра, и последний кадр не будет отображаться. Собствено поэтому пункт 12 будет некорректен, будут проигрываться с 2-кадра, до ПРЕДпоследнего. Поэтому для этого лучше использовать флаг. По умолчанию он false и stop в первом кадре работает.
Код:

if (!flag) {
        stop ();
}

А как только мы запускам клип на проигрывание и меням значение флага на true
Код:

flag = true;
ничего нам не мешает сделать цикл в анимации. Кроме того, с помощью этого можно добиться такого эффекта: Мы меняем флаг на false, но не останавливаем анимацию, она сделает это сама, как только дойдет до первого кадра.

Пункт 19 + 20:
Все бы так думали!

Wolsh 30.08.2007 19:57

Cпасибо iNils'y за наше счастливое детство!
По п. 11 правда облажался, наверно потому что последний раз так делал года два назад :( Действительно ведь сначала код!

Ладно, пока прекратим разбор полетов. Я не ставил задачей написать книгу - не обладаю достаточными знаниями. Кроме того, представленная флэшка сделана из какого-то прототипа, и многие вещи только выглядят бессмысленными, а в прототипе возможно выполняли какие-то функции. Бесполезно объяснять Opinio, что здесь она сделала не так, если она этого вообще не делала (напр. названия символов в библиотеке). Т.е. сама писанина дальше станет бессмысленной придиркой к деталям, функции которых мне не известны. О самом главном я сказал - подготовка изображений и ресайзинг, код в кадрах а лучше в кадре, текстовые поля, "ставить в ноль", порядок в библиотеке, использование одного символа для многих экземпляров...
Можно продолжить, если "работа над ошибками" будет сделана, и я четко увижу руку Opinio в этом проекте. Или хотя бы услышу вопросы :)

Kikasso 30.08.2007 21:02

Про символы в библиотеке - если оставлять имена по-умолчанию, могут быть проблемы с копипастом клипов из другого файла. Ну то есть у нас кнопочка, называется Symbol10, в ней квадратик Symbol1. Захотели мы другую кнопочку, нарисовали ее отдельно, копировали, вставили - имена совпали и старый Symbol1 заменился.

Wolsh 30.08.2007 21:50

2 Kikasso А у меня спрашивает разрешения на замену. Ты наверно отрубил предупреждение.

Kikasso 30.08.2007 22:13

Цитата:

Сообщение от Wolsh
2 Kikasso А у меня спрашивает разрешения на замену. Ты наверно отрубил предупреждение.

Я не отрубал, у меня тоже спрашивает, но все равно побьется либо старый, либо новый. Переименовать, увы, не предложат.

Opinio 02.09.2007 10:05

Wolsh, дело в том, что я не совсем успеваю переделать. То, что переделано есть здесь. В остальном придется подождать, т.к. это не основная моя работа.:boredom:

Сайт делала по книге (пример делания сайта), изменяя то, что хотела по-другому.

iNils, спасибо большое!:yahoo:

P.S. Хотите книги писать - не хотите, но, честно говоря, уже можно. Систематизировав материал, просто-напросто. Издатели с руками оторвут.


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

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