Просмотр полной версии : Как обратиться к символу в символе??
Всем привет! Вопрос по AS3....пол дня не могу разобраца с такой простой ситуацией!! помогите кто может!!
Есть символ к примеру "kvadrat", внутри него движущийся объект слева направо "kvadratik"- тоже символ, как мне через kvadrat дать команду stop(); kvadratik??
запись "kvadrat.kvadratik.stop(); " не работает... а как иначе?
kvadrat.kvadratik.stop() скорее всего не работает, потому что вы не назначили эти имена экземплярам на сцене, а не только в библиотеке. Или возможно есть ещё код, который мы не увидели, а в нем какая то логическая ошибка.
оперативная работа))) очень приятно!! ща попробую последовать вашим советам!
С точки зрения языка kvadratik не вложен в kvadrat. Поэтому - kvadratik.stop(). Конечно, если он связан с Action соответствующим образом.
не работает(( .. совсем запутался.. Вот смотрите: во влеше есть объект Kvadrat в нем бегает Kvadratik оба они символы и линкованы как классы..при такой записи
package
{
import flash.display.Sprite;
import flash.display.MovieClip;
public class Sample extends Sprite
{
private var kvadrat:Kvadrat = new Kvadrat();
//private var kvadratik:Kvadratik = new Kvadratik();
public function Sample()
{
addChild(kvadrat);
kvadrat.kvadratik.stop();//???
}
}
}
kvadratik не останавливаеца, его нельзя считать свойством kvadrata что ли?
Если ракомментируете строку присвоения переменной символа Kvadratik(), то должны смочь управлять прямо: kvadratik.stop().
А если оформите код в своем посте соответствующим образом, возможно, не получите едкого замечания от админа :)
package
{
import flash.display.Sprite;
import flash.display.MovieClip;
public class Sample extends Sprite
{
private var kvadrat:Kvadrat = new Kvadrat();
private var kvadratik:Kvadratik = new Kvadratik();
public function Sample()
{
addChild(kvadrat);
kvadratik.stop();//???
}
}
}
но он все равно продолжает проигрываться...
Добавлено через 2 минуты
как getChildByName применить сюда..:wacko:
А где тут вложенность клипов, я не вижу? Квадрат то вы создали на сцене, а квадратик только объявили. Где
kvadrat.addChild(kvadratik)?
Если сам символ квадрат в библиотеке уже содержит в себе ребёнка квадратик, то в вашем классе не надо квадратик создавать ещё раз, он уже и так там есть.
Может исходник дадите посмотреть, только не для cs5
:( у меня к сожалению cs5
вот пожалуйста..
package
{
import flash.display.Sprite;
import flash.display.MovieClip;
public class Sample extends Sprite
{
private var kvadrat:Kvadrat = new Kvadrat();
private var kvadratik:Kvadratik = new Kvadratik();
public function Sample()
{
addChild(kvadrat);
kvadrat.addChild(kvadratik);
kvadratik.stop();//???
}
}
}
так тож не останавливается ..кошмар какой то..
f.g.programmer
25.09.2010, 23:20
Скорее всего достаточно просто во fla символу который лежит в символе Kvadrat и является экземпляром Kvadratik-а присвоить идентификатор kvadratik.
Причём, если Kvadrat имеет несколько ключевых кадров, идентификатор kvadratik для внутреннего Kvadratik-а нужно присвоить в каждом ключевом кадре.
Добавлено через 1 минуту
Под исходниками подразумевается fla
Скорее всего достаточно просто во fla символу который лежит в символе Kvadrat и является экземпляром Kvadratik-а присвоить идентификатор kvadratik.
Причём, если Kvadrat имеет несколько ключевых кадров, идентификатор kvadratik для внутреннего Kvadratik-а нужно присвоить в каждом ключевом кадре.
спасибо за идею- не прошла.. не хочет тормозить гад....
Добавлено через 3 минуты
:confused: как же все таки это сделать...
Вы исходник выкладывайте, а не swf
Вы добавили на сцену символ Квадрат, со вложенным, но не связанным с AS экземпляром символа Квадратик. Далее, объявили класс символа Квадратик. Из библиотеки. Символ Квадратик лежит у вас в библиотеке а вы им пытаетесь управлять, с одной стороны. С другой. На сцене Квадрат со вложенным, но необъявленным в AS символом-мувиком Квадратик. На него вы никак не воздействуете и воздействовать не можете.
Правда, все это так как мне кажется, но телепат из меня плохой. Выложите fla-файл. Тогда можно будет сказать точнее.
Даже если у вас CS5, то просто сохраните для CS4
вот для cs4 все как надо))
:quiet:вот так вот.. это вам не сложные логарифмические массивы описывать))) Вот простой пример, сижу уже целый день над ним
andrew911
26.09.2010, 00:50
Ну как вам и писали откройте символ Kvadrat и присвойте вложенному в него мувику имя kvadratik
или
в коде поправьте
MovieClip(kvadrat.getChildAt(0)).stop();
Но для вас, думаю, первый способ лучше
Ураааа! Оседлали все таки, можно спасть спокойно!! Первый способ не помог
( присвоить имя kvadratik), а вот второй "MovieClip(kvadrat.getChildAt(0)).stop();"
сработал!!! правда запись немного странная... но все равно ВСЕМ большое Спа-а-а-асибо!!
Автор предидущего поста имел ввиду видимо следующее:
package
{
import flash.display.Sprite;
import flash.display.MovieClip;
public class Sample extends Sprite
{
private var kvadrat:Kvadrat = new Kvadrat();
private var kvadratik:MovieClip = kvadrat.getChildAt(0) as MovieClip ;
public function Sample()
{
addChild(kvadrat);
kvadratik.stop();
}
}
}
Что в принципе "тот же шарик - вид сбоку".
public var kvadratik! Собственно почему private?
public var kvadratik! Собственно почему private?
а кому он нужен? Или вы хотите ещё и наверх доступ дать?
а кому он нужен? Или вы хотите ещё и наверх доступ дать?
Если бы мне надо было сверху управлять вложенным в объект объектом, Я бы сделал метод, но раз надо именно kvadrat.kvadratik.stop(); Я бы в классе квадрата написал бы public var kvadratic:SomeClass = new SomeClass(); а не добавлял его вручную во флеше.
Что не так в этом подходе?
andrew911
26.09.2010, 13:56
Странно, что первый способ не помог. Советую все-таки разобраться с ним, дальше не раз с таким столкнетесь.
Есть символ kvadrat, в него вложен мувиклип, чтобы к нему достучаться надо ему дать имя (kvadratik) и можно обращаться:
var kvadrat:Kvadrat = new Kvadrat();
kvadrat.kvadratik.stop();
ну вы сами пробовали? я выложил исходник,попробуйте и убедитесь))
просто я честно говоря тож так думал с самого начала, это была моя первая версия такого обращения, но когда ничего не получилось, то задал вопрос сюда..:)
Странно, что первый способ не помог...
По-моему, ничего странного. Вы связываете символ (квадратик) с классом в AS, но на сцене, точнее в символе квадрат его экземпляр, а не он сам. Поэтому необходимо связать его (экземпляр) с AS отдельно, уже в классе квадрат.
Добавлено через 18 минут
...Что не так в этом подходе?
А при "разборе полетов" вам придется бегать по всем классам связанных символов и смотреть где что объявлено? Это даже не моя точка зрения - рекомендуется объявлять все классы символов в основном классе приложения, а не внутри других классов-символов. Очевидно, что так легче контролировать всю структуру. Бывают конечно исключения, но это уже конкретные ситуации, конкретные обстоятельства. Затем и создаются возможности программистам решать любую задачу как минимум тремя разными подходами :)
andrew911
27.09.2010, 13:12
ну вы сами пробовали? я выложил исходник,попробуйте и убедитесь))
просто я честно говоря тож так думал с самого начала, это была моя первая версия такого обращения, но когда ничего не получилось, то задал вопрос сюда..:)
Разумеется пробовал
Выкладываю файлы, если такие трудности обозвать символ.
По-моему, ничего странного. Вы связываете символ (квадратик) с классом в AS, но на сцене, точнее в символе квадрат его экземпляр, а не он сам. Поэтому необходимо связать его (экземпляр) с AS отдельно, уже в классе квадрат.
Что-то вы путаете.
Вы создаете экземпляр класса Квадрат - квадрат.
Каждый квадрат содержит символ, вы присваиваете этому символу (мувику) имя.
То что символ квадратик связан с классом Квадратик ничего не меняет, это можно было и не делать. С таким же успехом можно сказать что "на сцене, точнее в символе квадрат экземпляр MovieClip, а не он сам. "
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.