Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.12.2007, 18:19
Lorex вне форума Посмотреть профиль Отправить личное сообщение для Lorex Посетить домашнюю страницу Lorex Найти все сообщения от Lorex
  № 1  
Ответить с цитированием
Lorex
 
Аватар для Lorex

Регистрация: Aug 2003
Адрес: Украина, Львов
Сообщений: 129
Question attachMovie в классе (Class)

Народ такая проблема. Помогите плиз.. Читал форум может не дочитал чего...

код класса:

Код:
class  buttonery extends MovieClip {

	static var   levelx =50;
	 
	function buttonery (pictype:String,  px:Number, py:Number)
	{	
		var  P:MovieClip;
		P.attachMovie ( pictype, "picc", levelx++ );
		P.picc._x=px;
		P.picc._y=py;
	
		
	}
	
}


//// код на первом кадре 
////  var B1:buttonery = new buttonery ("coffee",  30,100 );
////  var B2:buttonery = new buttonery ("orange",  200,100);
Проблема, как добится появления клипа? с названиями coffee и orange которые в библиотеке и линкейджнуты стеми ж именами.???? КАРАУЛ!!!!

На _root - ложатся... ( _root.attachMovie ( pictype, "picc", levelx++ ); ) но ето не дело... чё тут делать???


Последний раз редактировалось Lorex; 20.12.2007 в 18:22.
Старый 20.12.2007, 18:23
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Вы где-нибудь видели стандартный класс, у которого имя с маленькой буквы начинается? Так с какого перепоя вы называете классы с маленькой буквы?

В AS1/AS2 наследники MovieClip не создаются через оператор new.

Старый 20.12.2007, 18:25
Fernando Costa вне форума Посмотреть профиль Отправить личное сообщение для Fernando Costa Найти все сообщения от Fernando Costa
  № 3  
Ответить с цитированием
Fernando Costa
 
Аватар для Fernando Costa

Регистрация: Oct 2006
Адрес: simferopol -> kyiv
Сообщений: 2,161
Отправить сообщение для Fernando Costa с помощью ICQ
надо привязать мувик в библиотеке к классу buttonery - в поле Class укажите buttonery.
В поле identifier обзывайте как хотите и потом аттачте этот ваш мувик как обычно по его идентификатору

ЗЫ: классы пишутся с большой буквы
__________________
: M F N W :

Старый 20.12.2007, 18:58
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
ну, или еще вариант:
клип, к которому аттачится клип из библиотеки (Р) должен существовать до того как вы вызываете на нем аттачМуви. Т.е. его нужно либо в класе либо вне, но создать и либо передавать классу ссылку на него либо ссылку на клип, в котором нужно его создать соответственно.
__________________
Hell is the possibility of sanity

Старый 20.12.2007, 19:26
Lorex вне форума Посмотреть профиль Отправить личное сообщение для Lorex Посетить домашнюю страницу Lorex Найти все сообщения от Lorex
  № 5  
Ответить с цитированием
Lorex
 
Аватар для Lorex

Регистрация: Aug 2003
Адрес: Украина, Львов
Сообщений: 129
Ларчик открыл таким кодом

Код:
class  Buttonery extends MovieClip {

		 
	function Buttonery (pictype:String,  px:Number, py:Number, sx:Number, sy:Number)
	{	
		var nameclip = _root.getNextHighestDepth();
		var nmm = "Buttonery_container"+nameclip;
		_root.createEmptyMovieClip( nmm , nameclip);
		
		 eval(nmm).attachMovie (pictype , "picc", nameclip++ );
		 eval(nmm).picc._x=px;
		 eval(nmm).picc._y=py;
		 eval(nmm).picc._xscale =sx;
		 eval(nmm).picc._yscale =sy; 
		
		//trace (eval(nmm));
		
	}
	
}
Код заработал....
а помог мне тут еще и trace (eval(nmm));

он выдал

_level0.Buttonery_container1
_level0.Buttonery_container0
....

а я дописывал еще _root... и флеш, зараза, не глотнул

Ларчик открылся!
СПАСИБО ВСЕМ!!!!

Старый 20.12.2007, 19:28
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
attachMovie между прочим возвращает ссылку на созданный клип, как и createEmptyMovieClip, а вы извращаетесь в eval, да ещё в AS2. Ужас.

Старый 20.12.2007, 21:48
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Извращение...
Код:
class MyClass {
private var __mc:MovieClip;
public function myFunction(mc:MovieClip){
__mc = mc; // #1
__mc = mc.attachMovie("blah","blah",1234); // #2
__mc = mc.createEmptyMovieClip("blah",1234); // #3
__mc = mc.createEmptyMovieClip("blah",1234).attachMovie("blah","blah",1234); // #4
}
}
__________________
Hell is the possibility of sanity

Старый 21.12.2007, 13:52
Lorex вне форума Посмотреть профиль Отправить личное сообщение для Lorex Посетить домашнюю страницу Lorex Найти все сообщения от Lorex
  № 8  
Ответить с цитированием
Lorex
 
Аватар для Lorex

Регистрация: Aug 2003
Адрес: Украина, Львов
Сообщений: 129
не понял...
об"ясните тупоголовому процедурщику...
в своем варианте я принимаю (передаю) аргументы
function Buttonery (pictype:String, px:Number, py:Number, sx:Number, sy:Number)
а тут вы принимаете (передаете) как аргумент мувик... как ето работает? если так написан код вроде как понимаю логику... но мне нужно передать в функцию-конструктор параметры имя клипа, ширинаX, ширинаY....

Разжуйте для тормоза .. код в создания екземпляра и код класса...
А то фрагменты одни.... Ну начинал я с eval... ниче не сделать...
Спасибо!

Старый 21.12.2007, 15:42
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Передается не клип, а ссылка на него. Т.е. все сложные объекты (не строки\числа\константы) не дублируются при операциях с ними.
Пример:
Код:
var a:Object = {_a:100};
var b:Object = a;
b._a = 50;
trace(a._a); // output 50
eval - функция не рекомендованая к употреблению. И ее использование может привести к ошибкам, которые тяжело отследить.
В твоем случае есть 2 нормальных пути реализации:
1. Залинковать класс к клипу в библиотеке, как предложил Fernando Costa
2. Создавать экземпляр класса с помощью оператора new.
Я просто не люблю первый вариант. Но все равно попробую в двух словах объяснить. Дело в том, что MovieClip и все потомки этого класса не могут быть созданы с помощью оператора new потому что должны обязательно быть привязаными к родителю, и привязку эту никак в последствии поменять нельзя (что, слава богу, было изменено в АС3).
Т.е. чтобы создать новый клип - есть методы класса MovieClip - .attachMovie(), .createEmptyMovieClip(), .duplicateMovieClip() - все они требуют в агрументах указывать на родителя, либо родитель находится по умолчанию в определенном месте по отношению к клипу, чей метод был вызван.

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

Второй вариант - предпочтительнее для проектов, где нужна сложная програмная графика.

Эволюция %)
Код:
class Buttonery extends MovieClip {
	private var nameclip:Number = 0;
	private var nmm:Number = "";
	function Buttonery(pictype:String,  px:Number, py:Number, sx:Number, sy:Number) {
		nameclip = _root.getNextHighestDepth();
		nmm = "Buttonery_container"+nameclip;
		createEmptyMovieClip(nmm , nameclip);
		var picc:MovieClip = attachMovie(pictype , "picc", getNextHighestDepth());
		picc._x=px;
		picc._y=py;
		picc._xscale=sx;
		picc._yscale=sy;

		trace(this);

	}
}
Этот нужно аттачить из библиотеки
Код:
class Buttonery {
	private var nameclip:Number = 0;
	private var nmm:Number = "";
	private var buttonery_mc:MovieClip;
	function Buttonery(pictype:String,  px:Number, py:Number, sx:Number, sy:Number) {
		nameclip = _root.getNextHighestDepth();
		nmm = "Buttonery_container"+nameclip;
		buttonery_mc = _root.createEmptyMovieClip(nmm , nameclip);
		buttonery_mc.attachMovie(pictype , "picc", buttonery_mc.getNextHighestDepth());
		buttonery_mc.picc._x=px;
		buttonery_mc.picc._y=py;
		buttonery_mc.picc._xscale =sx;
		buttonery_mc.picc._yscale =sy;

		trace (buttonery_mc);

	}
}
Этот можно создать через new, но не красиво.
Код:
class Buttonery {
	private static var __instanceCounter:Number = 0;
	public static function createTypeClip(mc:MovieClip, pictype:String):MovieClip {
		return mc.attachMovie(pictype, pictype+(++__depthCounter), mc.getNextHighestDepth());
		}
}
Создаем "библиотеку" статических методов создающих клипы "на заказ" %)
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 21.12.2007 в 15:51.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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