Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обращение к кнопкам внутри мувиклипа (http://www.flasher.ru/forum/showthread.php?t=182512)

Somaha 25.07.2012 16:00

Обращение к кнопкам внутри мувиклипа
 
Имеется flash-сайт. На массив из кнопок на stage нормально вешается слушатель на клик, а когда пытаешься вставить в массив кнопки внутри других мувиклипов, swf не выдает критических ошибок при компиляции, но флешка перестает работать (ошибка 1009).

Код примерно такой:

Код AS3:

import fl.controls.Button;
import fl.transitions.Tween;
import fl.transitions.easing.*;
 
var btnArray:Array = new Array();
 
btnArray.push(btn_main);
btnArray.push(btn_gallery);
btnArray.push(btn_blog);
btnArray.push(content1.page1_main.btn_mainTextNEXT); // ПРОБЛЕМНАЯ КНОПКА ВНУТРИ МУВИКЛИПА, КОТОРЫЙ В СВОЮ ОЧЕРЕДЬ НАХОДИТСЯ В ДРУГОМ МУВИКЛИПЕ
 
for (var i:Number = 0; i < btnArray.length; i++) {
btnArray[i].addEventListener(MouseEvent.CLICK, onBtn); //ВЕШАЕМ СЛУШАТЕЛЬ КЛИК НА ВСЕ КНОПКИ МАССИВА
}
 
function onBtn(e:MouseEvent):void {
switch (e.target.name) {
 
case "btn_main":
new Tween(content1, "x", Elastic.easeOut, content1.x, 1987, 1, true);
trace("ok");
break;
 
case "btn_gallery":
new Tween(content1, "x", Bounce.easeOut, content1.x, 668, 1, true);
break;
 
case "btn_blog":
new Tween(content1, "x", Bounce.easeOut, content1.x, -643, 1, true);
break;
 
case "btn_mainTextNEXT":
content1.page1_main.gotoAndPlay(22); //ПРОБЛЕМНАЯ КНОПКА
trace("ok");
break;

Если проблемной кнопке присвоить класс Мувиклип, то все работает. Но меня интересует именно Button.

Может кто уже сталкивался?

bav 25.07.2012 16:22

Неплохо приводить еще и текст ошибки, помимо ее номера. По номерам их никто не помнит.
Цитата:

1009 null не имеет свойств.
В какой строчке возникает ошибка?

Somaha 25.07.2012 16:53

Спасибо что отозвались!
Ошибка такая:
"TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at Danya_Site_fla::MainTimeline/frame16()"

Еще заметил, что если пытаться добавить в массив кнопок мувиклип(кнопку) их других мувиклипов, которые находятся не на первых кадрах, так же возникает ошибка.
Надо ли в пути к кнопке (mc1.mc2.button) указывать на каком фрейме она находится? И как?

bav 25.07.2012 17:07

Цитата:

Надо ли в пути к кнопке (mc1.mc2.button) указывать на каком фрейме она находится? И как?
Такое невозможно. Поместите все кнопки, мувиклипы и вообще всю графику в первый кадр, вынесите код в класс и по мере необходимости показывайте и скрывайте те клипы, которые нужно.

Somaha 25.07.2012 17:26

То есть нет возможности разместить некоторую анимацию и контент предварительно(на кадрах) в программе flash cs4? Все надо в с помощью ac3 прописывать?

caseyryan 25.07.2012 17:29

Возможность есть. Просто такой подход чаще приводит к таким ошибкам.

Somaha 25.07.2012 17:31

Все понятно. Спасибо! Буду пыхтеть дальше. :)


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

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