Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Переделываю стандартный сэмпл Menu Flash cs5 - Возникла Ошибка (http://www.flasher.ru/forum/showthread.php?t=146720)

DDcH 16.11.2010 14:58

Переделываю стандартный сэмпл Menu Flash cs5 - Возникла Ошибка
 
Вложений: 3
Нужно было дабовить ещё один пункт (было 3 стало 4)
Все сделал аккуратно добавил на примере существуещего и обьекты и код.

Но выдает ошибку:

Код:

TypeError: Error #1010: Термин не определен и не имеет свойств.
        at banner1_fla::MainTimeline/highlightBtn()
        at banner1_fla::MainTimeline/overBtn()

а в дебагере выбает:
Код:

TypeError: Error #1010: Термин не определен и не имеет свойств.
        at banner1_fla::MainTimeline/highlightBtn()[banner1_fla.MainTimeline::frame1:211]
        at banner1_fla::MainTimeline/overBtn()[banner1_fla.MainTimeline::frame1:52]


Вот исходник и что получилось:

Вложение 25493
Вложение 25494

В архитектуре я не селен но все внутренние названия и общие названия даже слои и распределение в директории библиотеки сделал аналогично. Скажите как исправить. Потомучто понять я не в силах это, а задача наверняка простая.

И еще прикреплю исходник который был вначале
Вложение 25495

bav 16.11.2010 15:25

К сожалению не могу посмотреть исходники, ибо использую CS4. В целом же можно использовать следующий метод. Смотрите строчку кода номер 211 в первом кадре, видите, какие там упоминаются переменные, методы, свойства. Потом, строчкой выше добавляете необходимое количество вызовов trace(), чтобы увидеть что же из всего того, что вы увидели в строчке номер 211 равно undefined. Потом думаете, и ищите в коде, почему же оно это самое до сих пор не определено.

P.S. Попробуйте в следующий раз не писать в кадрах, если используете AS3.
P.P.S. Господа, имеющие CS5, будьте добры, конкретизируйте на основании исходников.

DDcH 16.11.2010 22:00

Код AS1/AS2:

//The main menu's instance name is yourMenu. 
//Find and replace yourMenu to match that of your menu instance.
 
stop();
var btnNum:int;
var highlightNum:int = 1;
 
var menu1Open:Boolean = false;
var menu2Open:Boolean = false;
var menu3Open:Boolean = false;
var menu4Open:Boolean = false;
 
 
 
var bg:MovieClip = new MovieClip();
bg.graphics.beginFill(0x999999, 1);
bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
bg.graphics.endFill();
bg.alpha = 0;
yourMenu.addChildAt(bg, 0);
 
//on mouse over menus: set btn number, highlight, open menu, close other menus
stage.addEventListener(MouseEvent.MOUSE_OVER, overBtn);
function overBtn(evt:MouseEvent):void {
        switch (evt.target) {
                case yourMenu.menu1_btn :
                        btnNum=1;
                        highlightBtn();
                        openMenu();
                        menu1Open = true;
                        closeOtherMenus();
                        break;
 
                case yourMenu.menu2_btn  :
                        btnNum=2;
                        highlightBtn();
                        openMenu();
                        menu2Open = true;
                        closeOtherMenus();
                        break;
 
                case yourMenu.menu3_btn  :
                        btnNum=3;
                        highlightBtn();
                        openMenu();
                        menu3Open = true;
                        closeOtherMenus();
                        break;
 
                case yourMenu.menu4_btn  :
                        btnNum=4;
                        highlightBtn();
                        openMenu();
                        menu4Open = true;
                        closeOtherMenus();
                        break;
 
        }
};
 
//when user mouse leaves a button, set the highlight
stage.addEventListener(MouseEvent.MOUSE_OUT, outBtn);
function outBtn(evt:MouseEvent):void {
        switch (evt.target) {
                case yourMenu.menu1_btn :
                        highlightNum=1;
                        break;
 
                case yourMenu.menu2_btn  :
                        highlightNum=2;
                        break;
 
                case yourMenu.menu3_btn  :
                        highlightNum=3;
                        break;
 
                case yourMenu.menu4_btn  :
                        highlightNum=4;
                        break;
 
        }
};
 
//mouse out of drop-down, ensure all menus close
bg.addEventListener(MouseEvent.MOUSE_OVER, leaveMenu);
function leaveMenu(evt:MouseEvent):void{
        if(bg.hitTestPoint(mouseX, mouseY, true)){
                closeMenu();
                menu1Open = false;
                menu2Open = false;
                menu3Open = false;
                menu4Open = false;
        }
 
}
 
//functions to open and close menus
function openMenu():void {
        yourMenu.menu_tween.menu_down.addTarget(yourMenu.getChildByName("menu" + btnNum), 1);
}
 
function closeMenu():void {
        yourMenu.menu_tween.menu_up.addTarget(yourMenu.getChildByName("menu" + btnNum), 1);
}
 
//close menus other than the current one
function closeOtherMenus():void {
        if(btnNum == 1 && menu2Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu2, 1);
                menu2Open = false;
        }
        if(btnNum == 1 && menu3Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu3, 1);
                menu3Open = false;
                }
        if(btnNum == 1 && menu4Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu4, 1);
                menu4Open = false;
                }
 
 
 
 
        if(btnNum==2 && menu1Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu1, 1);
                menu1Open = false;
        }
        if(btnNum==2 && menu3Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu3, 1);
                menu3Open = false;
        }
        if(btnNum==2 && menu4Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu4, 1);
                menu4Open = false;
        }
 
 
 
 
        if(btnNum==3 && menu1Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu1, 1);
                menu1Open = false;
        }
        if(btnNum==3 && menu2Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu2, 1);
                menu2Open = false;
        }
        if(btnNum==3 && menu4Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu4, 1);
                menu4Open = false;
        }
 
 
 
 
        if(btnNum==4 && menu1Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu1, 1);
                menu1Open = false;
        }
        if(btnNum==4 && menu2Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu2, 1);
                menu2Open = false;
        }
        if(btnNum==4 && menu3Open){
                yourMenu.menu_tween.menu_up.addTarget(yourMenu.menu3, 1);
                menu3Open = false;
        }
 
 
 
};
 
//adds animation based on current and previous button
function highlightBtn():void {
 
        if(btnNum == 1 && highlightNum == 2){
                yourMenu.highlight_tween.two_one.addTarget(yourMenu.highlight_mc, 1);
        }
        if(btnNum == 1 && highlightNum ==3){
                yourMenu.highlight_tween.three_one.addTarget(yourMenu.highlight_mc, 1);
        }
        if(btnNum == 1 && highlightNum ==4){
                yourMenu.highlight_tween.four_one.addTarget(yourMenu.highlight_mc, 1);
        }
 
 
 
        if(btnNum == 2 && highlightNum == 1){
                yourMenu.highlight_tween.one_two.addTarget(yourMenu.highlight_mc, 1);
        }
        if(btnNum == 2 && highlightNum ==3){
                yourMenu.highlight_tween.three_two.addTarget(yourMenu.highlight_mc, 1);
        }
        if(btnNum == 2 && highlightNum ==4){
                yourMenu.highlight_tween.four_two.addTarget(yourMenu.highlight_mc, 1);
        }
 
 
        if(btnNum == 3 && highlightNum == 1){
                yourMenu.highlight_tween.one_three.addTarget(yourMenu.highlight_mc, 1);
        }
        if(btnNum == 3 && highlightNum == 2){
                yourMenu.highlight_tween.two_three.addTarget(yourMenu.highlight_mc, 1);
        }
        if(btnNum == 3 && highlightNum == 4){
                yourMenu.highlight_tween.four_three.addTarget(yourMenu.highlight_mc, 1);
        }
 
 
        if(btnNum == 4 && highlightNum == 1){
                yourMenu.highlight_tween.one_four.addTarget(yourMenu.highlight_mc, 1);
        }
        if(btnNum == 4 && highlightNum == 2){
                yourMenu.highlight_tween.two_four.addTarget(yourMenu.highlight_mc, 1);
        }
        if(btnNum == 4 && highlightNum == 3){
                yourMenu.highlight_tween.three_four.addTarget(yourMenu.highlight_mc, 1);
 
        }
 
 
};
 
//Assign appropriate button actions for menu items
stage.addEventListener(MouseEvent.CLICK, itemButtons);
function itemButtons(evt:MouseEvent):void {
        switch (evt.target) {
 
                case yourMenu.menu1.item1_btn :
                        trace("Menu 1, button 1");
                        break;
 
                case yourMenu.menu1.item2_btn :
                        trace("Menu 1, button 2");
                        break;
 
                case yourMenu.menu1.item3_btn :
                        trace("Menu 1, button 3");
                        break;
 
 
 
                case yourMenu.menu2.item1_btn :
                        trace("Menu 2, button 1");
                        break;
 
                case yourMenu.menu2.item2_btn :
                        trace("Menu 2, button 2");
                        break;
 
                case yourMenu.menu2.item3_btn :
                        trace("Menu 2, button 3");
                        break;
 
 
 
                case yourMenu.menu3.item1_btn :
                        trace("Menu 3, button 1");
                        break;
 
                case yourMenu.menu3.item2_btn :
                        trace("Menu 3, button 2");
                        break;
 
                case yourMenu.menu3.item3_btn :
                        trace("Menu 3, button 3");
                        break;
 
 
 
                case yourMenu.menu4.item1_btn :
                        trace("Menu 4, button 1");
                        break;
 
                case yourMenu.menu4.item2_btn :
                        trace("Menu 4, button 2");
                        break;
 
                case yourMenu.menu4.item3_btn :
                        trace("Menu 4, button 3");
                        break;
 
        }
};


DDcH 16.11.2010 22:50

Вложений: 1
Цитата:

Сообщение от bav (Сообщение 950085)
К сожалению не могу посмотреть исходники, ибо использую CS4.

Вот пересохранено в кс 4 версию! Спасибо за заинтересованность!
Вложение 25498

bav 17.11.2010 00:39

1) Исследуем место преступления:
Код AS3:

if (btnNum == 4 && highlightNum == 1)
{
        try
        {
                yourMenu.highlight_tween.one_four.addTarget(yourMenu.highlight_mc, 1); // строка 211
        } catch (error:Error) {
                trace(error.message);
                trace("yourMenu = " + yourMenu);
                trace("yourMenu.highlight_tween = " + yourMenu.highlight_tween);
                trace("yourMenu.highlight_tween.one_four = " + yourMenu.highlight_tween.one_four);
        }
}
// output:
// Error #1010: Термин не определен и не имеет свойств.
// yourMenu = [object MovieClip]
// yourMenu.highlight_tween = [object highlighttweeninstance_17]
// yourMenu.highlight_tween.one_four = undefined

2) Стоп. Где вы нашли такое безобразие? У вас все кроме четвертого меню плавно выезжают и заезжают? У меня нет.
3) Пѝшите на AS3 – забудьте про код в кадрах, хотя бы для начала. Прочтите книгу Мука "Essential ActionScript 3.0", если она еще не прочитана, и сделайте такое меню собственными руками. Одним только кодом.
4) Познакомьтесь с FlashDevelop.

DDcH 17.11.2010 12:57

Цитата:

Сообщение от bav (Сообщение 950226)
2) Стоп. Где вы нашли такое безобразие? У вас все кроме четвертого меню плавно выезжают и заезжают? У меня нет.

Я не понимаю о чём Вы. Я не разбираюсь в этом языке и это не моя специфика, я не смогу его изучать потому что занимаюсь другим делом. Я не понимаю в этом ничего.
Есть задача чтобы все 4 меню работали. И я прошу поддержку. Помогите. Скажите что именно мне исправить.

Хомяк 17.11.2010 15:01

Вы не всё откорректировали. В мувике highlight_tween нужно еще слои добавлять.

DDcH 17.11.2010 18:05

Вложений: 1
Цитата:

Сообщение от Хомяк (Сообщение 950344)
Вы не всё откорректировали. В мувике highlight_tween нужно еще слои добавлять.

Слои добавил, назвал по аналогии, добавил ключевики из тех которые были рядом.
И аналогичная история! Помогите!

ВОТ ФАЙЛ проект кс4 переделанный Вложение 25503

Хомяк 17.11.2010 21:42

Вложений: 1
Твины этих слоев имеют также имена. А эти имена используются методами в 1-ом кадре основного мувика. Вы твины скопировали на новые слои но их имена не поправили (four_two, three_four, etc.). Теперь все работает, забирайте.

DDcH 18.11.2010 09:29

Цитата:

Сообщение от Хомяк (Сообщение 950416)
Твины этих слоев имеют также имена. А эти имена используются методами в 1-ом кадре основного мувика. Вы твины скопировали на новые слои но их имена не поправили (four_two, three_four, etc.). Теперь все работает, забирайте.

Спасибо огромное, в этом кс 5 все наоборот как в премьере.
Спасибо

Хомяк 18.11.2010 11:47

На здоровье :)


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

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