Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как загрузить следующий уровень в Flash (http://www.flasher.ru/forum/showthread.php?t=207254)

Segeja 04.04.2014 09:16

как загрузить следующий уровень в Flash
 
Здравствуйте, меня интересует вопрос каким способом можно загрузить второй уровень в игре это второй кадр во Flash с помощью Action Script 3.0 заранее спасибо :) Вот мой код:
Код AS3:

fscommand("fullscreen", "true");
import flash.events.Event;
import flash.events.KeyboardEvent;
 
var skorost = 0.1;
var uskorenie = 0.11;
 
var cars:Array = [car1,car2];
 
stage.addEventListener(Event.ENTER_FRAME, a);
stage.addEventListener(KeyboardEvent.KEY_UP, f_up);
 
function f_up(e:KeyboardEvent)
{
        if (e.keyCode ==40)
        {
                car3.y +=  10;
        }
        if (e.keyCode ==38)
        {
                car3.y -=  10;
        }
}
function a(E:Event)
{
        skorost +=  uskorenie;
        if (skorost>4)
        {
                skorost = 4;
        }
 
        var i:int = cars.length;
        while (i--)
        {
                var car:MovieClip = cars[i];
                car.x -=  skorost;
                if (car.x <= 0)
                {
                        car.x = 960;
                }
                if (car.hitTestObject(car3))
                {
                        removeChild(car);
                        cars.splice(i, 1);
                }
        }
 
        car3.x +=  skorost;
        if (car3.x > 960)
        {
                car3.x = 0;
        }
}


Akopalipsis 04.04.2014 17:01

Если Вам нужно перейти на второй кадр, то в коде первого, Вам нужно инициировать вызов окончания уровня и в этом методе написать - gotoAndPlay(2);

Segeja 05.04.2014 08:31

Akopalipsis подскажите пожалуйста, а как инициировать вызов окончания уровня
приведите пример кода пожалуйста, заранее спасибо :)

Добавлено через 3 часа 38 минут
Akopalipsis оказалось что у меня клавиши клавиатуры не работают не могу перемещать машинку car3 вверх и вниз по игрек, я сделал меню попадаю на кадр с GAME вот его код это уровень 1 всё работает, кроме одного клавиатуры подскажите пожалуйста как изменить код игры заранее спасибо :)
Код AS3:

stop();
Menu3_btn.addEventListener(MouseEvent.CLICK,OnClickMenu3);
 
function OnClickMenu3(e:MouseEvent):void
{
        gotoAndPlay("MENU");
}
stop();
Level2_btn.addEventListener(MouseEvent.CLICK,OnClickLevel2);
 
function OnClickLevel2(e:MouseEvent):void
{
        gotoAndPlay("LEVEL");
}
stop();
import flash.events.Event;
import flash.events.KeyboardEvent;
 
var skorost = 0.1;
var uskorenie = 0.11;
 
var cars:Array = [car1,car2];
 
stage.addEventListener(Event.ENTER_FRAME, a);
stage.addEventListener(KeyboardEvent.KEY_UP, f_up);
 
function f_up(e:KeyboardEvent)
{
        if (e.keyCode == 39)
        {
                car3.y +=  20;
        }
        if (e.keyCode == 37)
        {
                car3.y -=  20;
        }
}
function a(E:Event)
{
        skorost +=  uskorenie;
        if (skorost>4)
        {
                skorost = 4;
        }
 
        var i:int = cars.length;
        while (i--)
        {
                var car:MovieClip = cars[i];
                car.x -=  skorost;
                if (car.x <= 0)
                {
                        car.x = 960;
                }
                if (car.hitTestObject(car3))
                {
                        removeChild(car);
                        cars.splice(i, 1);
                }
        }
 
        car3.x +=  skorost;
        if (car3.x > 960)
        {
                car3.x = 0;
        }
}

Добавлено через 6 часов 14 минут
Akopalipsis вот такой баг появляется при нажатии на кнопку меню, которая возвращает в главное меню, подскажите пожалуйста как избавится от этого бага, заранее спасибо :)
Код:

TypeError: Error #2007: Параметр hitTestObject не должен быть равен нулю.
        at flash.display::DisplayObject/_hitTest()
        at flash.display::DisplayObject/hitTestObject()
        at Game_0012_fla::MainTimeline/a()

Добавлено через 12 часов 42 минуты
Я написал вот такой код чтобы проверит клавиатуру вставил в первый кадр с меню
Код AS3:

trace(e);

отслеживает клавиатуру, а вот в кадре с первым уровнем не запускается
Код AS3:

trace(e);

вообще, подскажите пожалуйста что нужно во Flash сделать, заранее спасибо :) Вот код:
Код AS3:

import flash.events.KeyboardEvent;
 
stop();
stage.addEventListener(KeyboardEvent.KEY_DOWN, f_down);
 
function f_down (e:KeyboardEvent) {
        trace(e);
}


Akopalipsis 05.04.2014 21:39

Это не баг, а ошибка, допущенная Вами. И подсказать я тоже не могу, так-как в кадрах не понимаю...
Могу только сказать, что у методов-функций есть зона видимости. Определяется она фигурными скобками {}.
У Вас в обработчике событий, который называется f_down, есть один обязательный параметр e ( event ) с типом KeyboardEvent. И вот обратиться к этому параметру е, можно только в зоне видимости метода, то есть только между скобками.
Код AS3:

function f_down (e:KeyboardEvent) {
        trace(e);
}

В этом коде Вы обращаетесь правильно, но если сделать как ниже, то работать не будет.
Код AS3:

function f_down (e:KeyboardEvent) {
 
}
trace(e);

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

Segeja 06.04.2014 08:31

Akopalipsis вот весь код из кадра с уровнем
Код AS3:

stop();
Menu3_btn.addEventListener(MouseEvent.CLICK,OnClickMenu3);
 
function OnClickMenu3(e:MouseEvent):void
{
        gotoAndPlay("MENU");
}
stop();
Level2_btn.addEventListener(MouseEvent.CLICK,OnClickLevel2);
 
function OnClickLevel2(e:MouseEvent):void
{
        gotoAndPlay("LEVEL");
}
stop();
import flash.events.Event;
import flash.events.KeyboardEvent;
 
var skorost = 0.1;
var uskorenie = 0.11;
 
var cars:Array = [car1,car2];
 
stage.addEventListener(Event.ENTER_FRAME, a);
stage.addEventListener(KeyboardEvent.KEY_DOWN, f_down);
 
function f_down (e:KeyboardEvent) {
        if (e.keyCode == 39)
        {
                car3.y +=  20;
        }
        if (e.keyCode == 37)
        {
                car3.y -=  20;
        }
}
function a(E:Event)
{
        skorost +=  uskorenie;
        if (skorost>4)
        {
                skorost = 4;
        }
 
        var i:int = cars.length;
        while (i--)
        {
                var car:MovieClip = cars[i];
                car.x -=  skorost;
                if (car.x <= 0)
                {
                        car.x = 960;
                }
                if (car.hitTestObject(car3))
                {
                        removeChild(car);
                        cars.splice(i, 1);
                }
        }
 
        car3.x +=  skorost;
        if (car3.x > 960)
        {
                car3.x = 0;
        }
}

Добавлено через 18 минут
это ссылка на уровень два
Код AS3:

gotoAndPlay("LEVEL");


Akopalipsis 06.04.2014 20:38

Если я правильно понял, то этот код первого уровня и нажав на кнопку фокус смещается на второй кадр, который так же является и следующим уровнем. И в этот момент вылезает ошибка... Так?
Тогда покажите весь код следующего уровня. Потому что в ошибке говорится про какой-то метод _hitTest(),
которого я не вижу.

ZackMercury 06.04.2014 21:34

Цитата:

Потому что в ошибке говорится про какой-то метод _hitTest(),
которого я не вижу.
------
Цитата:

TypeError: Error #2007: Параметр hitTestObject не должен быть равен нулю.
at flash.display::DisplayObject/_hitTest()
at flash.display::DisplayObject/hitTestObject()
at Game_0012_fla::MainTimeline/a()

Akopalipsis 06.04.2014 22:48

То есть, вот этот подчеркнутый _hitTest() программный метод?

Segeja 07.04.2014 08:08

Akopalipsis не _hitTest() а в коде у меня есть hitTestObject() ошибка случается когда с первого уровня уходишь на второй или уходишь в главное меню c первого уровня, вот код второго уровня:
Код AS3:

stop();
Menu4_btn.addEventListener(MouseEvent.CLICK,OnClickMenu4);
 
function OnClickMenu4(e:MouseEvent):void
{
        gotoAndPlay("MENU");
}
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.display.*;
 
var skorostz = 0.1;
var uskoreniez = 0.11;
 
var vazs:Array = [vaz1,vaz2];
 
stage.addEventListener(Event.ENTER_FRAME, b);
stage.addEventListener(KeyboardEvent.KEY_DOWN, f_up);
 
function f_up (e:KeyboardEvent) {
        if (e.keyCode == 39)
        {
                vaz3.y +=  20;
        }
        if (e.keyCode == 37)
        {
                vaz3.y -=  20;
        }
}
function b(E:Event)
{
        skorostz +=  uskoreniez;
        if (skorostz>4)
        {
                skorostz = 4;
        }
 
 
        var i:int = vazs.length;
        while (i--)
        {
                var vaz:MovieClip = vazs[i];
                vaz.x -=  skorostz;
                if (vaz.x <= 0)
                {
                        vaz.x = 960;
                }
                if (vaz.hitTestObject(vaz3))
                {
                        removeChild(vaz);
                        vazs.splice(i, 1);
                }
        }
 
        vaz3.x +=  skorostz;
        if (vaz3.x > 960)
        {
                vaz3.x = 0;
        }
}

Добавлено через 14 минут
вот я думаю что из-за этого у меня и ошибка появляется
Код AS3:

if (vaz.hitTestObject(vaz3))


Akopalipsis 10.04.2014 00:55

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

Добавлено через 58 часов 12 минут
Вашу тему закрыли, по этому напишу здесь - выложите на форум Ваш проект, я посмотрю, может смогу помочь. Только заливать не куда-то, а на форум прикрепить к сообщению. Если графики слишком много
и залить не получится, то удалите её и замените на квадратики.


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

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