Форум 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)
-   -   goToAndPlay, scene. Трабл (http://www.flasher.ru/forum/showthread.php?t=151970)

AHKHOBA 09.03.2011 19:09

goToAndPlay, scene. Трабл
 
Неожиданно столкнулась с проблемой перехода на другую сцену из клипа.
Структура такая: есть несколько сцен. На первой лежит клип, в котором кнопка, при нажатии на которую должен осуществляться переход на другую сцену. Однако не работает. Что меня удивляет, даже запись вида:
Код AS1/AS2:

on (press) {
  _root.gotoAndPlay("Scene 2", 1);
}

не дает нужного эффекта.
Пробовала на главной (первой) сцене создать функцию перехода, которая бы и вызывалась из кнопки. Однако же параметр scene должен быть в кавычки заключен, не воспринимается просто в виде строковой переменной.

Подскажите, как справиться с этой тонкостью, пожалуйста.

iNils 09.03.2011 19:12

Цитата:

Неожиданно столкнулась с проблемой перехода на другую сцену из клипа.
Запись вида gotoAndPlay (сцена, кадр) работает только из основного таймлайна, из клипов она не работает.

AHKHOBA 09.03.2011 19:26

да, это я уже поняла. Но должен же быть другой путь?.. Вы знаете?

mooncar 09.03.2011 19:29

Вообще не пользоваться сценами - это неудобно и неправильно с т.зр. организации проекта.
От них уходят сразу после знакомства с флешем.

AHKHOBA 09.03.2011 19:33

та я знаю. Но я всего лишь вношу изменения в готовый проект, который изначально был так дурацки скомпонован. А разносить все 25 сцен по клипам - не оправдывается ничем. Но спасибо Вам за ответы

mooncar 09.03.2011 19:51

Тогда попробуйте так. На главном таймлайне организуйте функцию вида
Код AS1/AS2:

function goNext(scene:String, frm:Number)
{
  gotoAndPlay(scene, frm);
}

Код в кадре, разумеется.

И вызывайте ее откуда угодно:
Код AS1/AS2:

_root.goNext('Scene 2', 1);


AHKHOBA 09.03.2011 19:55

а может можно средствами actionscript выполнить команду, заданную строкой?

Насколько я помню, в некоторый языках за это отвечала функция eval (которая во флеше какую-то другую роль выполняет). Было бы так, если бы работала:
Код AS1/AS2:

_root.command = 'gotoAndPlay("Scene 11", 1)';
eval(_root.command);

ну а есть вместо eval такая функция в actionscript?

mooncar 09.03.2011 19:57

А чем мое решение не устраивает? Собственно то, что вы пытаетесь сделать с eval (которая тут вряд ли поможет), давно и прочно делается с помощью функций.

AHKHOBA 09.03.2011 19:58

Цитата:

Сообщение от mooncar (Сообщение 979051)
Тогда попробуйте так. На главном таймлайне организуйте функцию вида
Код AS1/AS2:

function goNext(scene:String, frm:Number)
{
  gotoAndPlay(scene, frm);
}

Код в кадре, разумеется.

И вызывайте ее откуда угодно:
Код AS1/AS2:

_root.goNext('Scene 2', 1);


да пробовала же. Не нравится компилятору, что я сцену в виде переменной задаю - без кавычек. Ругается, и все портит

mooncar 09.03.2011 20:03

Цитата:

Сообщение от AHKHOBA (Сообщение 979055)
да пробовала же. Не нравится компилятору, что я сцену в виде переменной задаю - без кавычек. Ругается, и все портит

Да, я ясно. Беда с этими сценами. Увы, не знаю, как быть.


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

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