![]() |
Небольшой вопросик
Такая ситуация. В сцене есть переменная n которая равна 0. Так же в сцене есть movie clip по окончанию которого n=1. Как получить значение переменной из movie clipа (n=1) в саму сцену. Допустим чтоб кака нибудь z в сцене была равна значению n из mc.
|
z = <имя клипа>.n
|
Воообще-то это основной синтаксис современных языков программирования.
z = mc.n в данном случае z это ссылка на объект (клип, строка, текстовое поле) Можно создавать ссылкм и на функции, и на методы, и на другие объекты (например мувиклипы). Например в клипе house есть клип window Можно записять прямую ссылку на window z = house.window и делать с мувиклипом по ссылке что угодно z.x = 100 Можно и так делать a = _root.house.window.play и вызывать метод объекта a() можно ещё свои методы и функции писать и вызывать |
Спасибо ребят. Че то я как то по сложному начал делать. сам запутался. А eval это что тогда???
|
Функция eval конвертирует сторку в путь к объекту (ряд ссылок)
Код:
str = 'mc.n'; |
Забудь этот архаизм. Eval сильно тормозит при работе.
|
Цитата:
Код:
//остановим |
Цитата:
Всё прекрасно работает. Код:
function f() |
ого, не знал...
|
2 miramax
Вложений: 1
Ты используешь разные вещи тут:
Код:
a = _root.house.window.playКод:
function f() |
2 Bar_Duck13:
Код:
this.createEmptyMovieClip ("mc2", 0); |
вы восьмёрку юзаете, а я девятку. )))))
В АС 3 всё работает, а в восьмерке почему-то не все методы MovieClip'а вызываются (stop, play). Зато самописанные вызываются всегда. Видимо это реальный баг АС 2 . В любом случае, ссылка может быть на любую функцию! Я просто не удачный ПРИМЕР привёл stop(). |
2 iNils, 2 miramax: Вы не путайте функции созданные вами с ПРЕДУСТАНОВЛЕННЫМИ(наверно так называются), те которые цветом выделяются. - play, stop, и т.д. Miramax как раз про это пишет и версия тут ни при чём!!!
|
Цитата:
Почему же всё работает в АС 3 ? Вывод, в АС 2 где-то глюк. Функция она и в африке функция. Вызов функции по ссылке это чуть ли не основа ООП. Надо будет не полениться создать класс extends MovieClip и попробовать вызвать метод по ссылке... |
Цитата:
И я не думаю, что баг именно в АС2, потому как ставя ас1 при публикации это также не работает. И кстати: Код:
q = _root.mc.stop; |
С удовольствием посмотрю твой исходник. Только просьба: сделай для Flash 2004 MX. Я не изучал досконально прототипы, классы. НЕ ПОЛЕНИСЬ! Если получиться, то так и быть - я неправ. Но сейчас неправ(а) - ты. Я имею ввиду твоё первое изречение:(Да простит меня iNils)
"a = _root.house.window.play и вызывать метод объекта a()" |
А вот это работает...
Код:
_root.mc.q = _root.mc.stop; |
Все, разобрался. Копируем код, запускаем с дебагером и смотрим, где создался mcTest :(
Код:
c = mc.createEmptyMovieClip; |
Другое дело... :-)
|
Да, проблема в том что АС 1/2 всё-таки не класс ориентированы вотличие от АС 3.Методы объявлены или глобально, или непонятно где действуя только на вызывающий объект.... Здесь и вкралась ошибка.
|
Цитата:
|
2 Miramax
и AS1 и AS3 100% ООП языки, оба они динамические, единственное отличие ас3 от ас1, это опциональная типизация, и 2 механизма наследования(трейтовый и прототипный, в то время как ас1 только прототипный) Класс Ориентированных языков еще не придумали, есть Объекто Ориентированные и Аспектно Ориентированные. Насчет этой байды: Код:
c = mc.createEmptyMovieClip;Это теория. |
ЗЫ между прочим АС1 даже ближе к ООП чем C++\C# ;)
|
Ок, я имел ввиду АС 3 это класс-based язык.
Но то что нельзя по ссылке вызвать метод - проблемка-с |
что такое class-based Мирамакс?
в АС1 абсолютно все пашет на классах. я не понимаю тебя. |
Есть такое понятие как Объектно-Ориентированный Язык, это значит что язык напрямую зависит от объектов.
Класс, Тип, Структура, Прототип это просто шаблоны, на Java\C++ иногда реализуют прототипную цепочку вручную, в АС, данный паттерн проектирования поддерживается "от рождения". От того каким образом создаются объекты разницы большой нету, (хотя есть разница в скорости, прототипный паттерн постоянно бегает проверяет всех родителей), объекты остаются объектами. И в ас1 пашут классы(Object,String, MovieClip, TextField, LoadVars), просто наследование реализованно через прототипы. |
Вот класс-ориентированный или класс-based
http://en.wikipedia.org/wiki/Class-based_programming Просто модель проектирования ООП |
Цитата:
Код:
_root.mc.stop(); |
Получается на протяжении всех версий 6, 7, 8 макромедиа не исправила этот баг?
У меня была идея откомпилить в FDT но я подумал, что это в языках AS1/2 проблема. Значит компиль в девятке хоть в чё-то лучше предыдущих :) |
Цитата:
|
| Часовой пояс GMT +4, время: 19:42. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.