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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0 > Статьи

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 30.07.2007, 14:23
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 31  
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
Цитата:
Сообщение от miramax
Я бы попробовал примерно вот такие глубины вложенности:
Код:
              01
            02  03
          04  05  06
        07  08  09  10
      11  12  13  14  15
    16  17  18  19  20  21
  22  23  24  25  26  27  28
да я когда прикидывал тоже был сначала склонен к этой системе, но более правильно делать так.
Код:
                   00
                 01  10
               02  11  20
             03  12  21  30
           04  13  22  31  40
с такой системой работать на порядок легче! потому что в нумерации соблюдается двумерность, которую можно использовать как шахматное поле.

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

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
хочу спросить на счёт double Click

вот изначально рабочий код
Код:
package { 
	import flash.display.*;
	import flash.events.*;
	public class Parse extends MovieClip {
		public function Parse() {
			var item:Item	= new Item();
			addChild(item);
		}
	}
}
import flash.display.*;
import flash.events.*;
class Item extends MovieClip {
	private var roundRect:Sprite	= new Sprite();
	private var mc:Sprite	= new Sprite();
	public function Item ():void {
		roundRect.addChild(drawRoundRect(0xEEEEEE));
		roundRect.doubleClickEnabled=true;
		roundRect.addEventListener(MouseEvent.DOUBLE_CLICK, onDblClick);
		addChild(roundRect);
	}
	private function onDblClick(evt:MouseEvent):void { 
		trace("onDblClick");
	} 
	private function drawRoundRect(color:Number):Shape {
		var child:Shape	= new Shape();
			child.graphics.beginFill(color);
			child.graphics.drawRoundRect(0, 0, 166, 23, 20);
			child.graphics.endFill();
		return(child);
	}
}
но мне надо было сделать так (т.е. заставить работать на весь Item)
Код:
public function Item ():void {
		roundRect.addChild(drawRoundRect(0xEEEEEE));
		addChild(roundRect);
		doubleClickEnabled=true;
		addEventListener(MouseEvent.DOUBLE_CLICK, onDblClick);
	}
я ещё пытался всё это засунуть в 1 мувклип тоже не получилось
Код:
public function Item ():void {
		roundRect.addChild(drawRoundRect(0xEEEEEE));
		mc.addChild(roundRect);
		mc.doubleClickEnabled=true;
		mc.addEventListener(MouseEvent.DOUBLE_CLICK, onDblClick);
addChild(mc);
	}
как нужно делать правильно?

Старый 31.07.2007, 14:31
vapes вне форума Посмотреть профиль Отправить личное сообщение для vapes Найти все сообщения от vapes
  № 33  
vapes
 
Аватар для vapes

блогер
Регистрация: Nov 2006
Адрес: Минск
Сообщений: 370
Записей в блоге: 6
Отправить сообщение для vapes с помощью ICQ Отправить сообщение для vapes с помощью Skype™
Cделай класс Item унаследованный от Sprite(), пихай туда все что хочешь, а потом:
Код:
var item:Sprite = new Item();
item.addEventListener(...)
если захочешь написать обработчик внутри, то пиши this.addEventListener(...);


Последний раз редактировалось vapes; 31.07.2007 в 14:33.
Старый 31.07.2007, 14:49
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 34  
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
мне для упрощения работы хотелось сделать как раз второй вариант, но
второй вариант не сработал ни this.addEventListener(...);
ни просто addEventListener(...);

самый более меннее нормальный и рабочий вариант оставил первый, с той лишь разницей что делаю hit (с hit.alpha=0) Зону внутри Item() и на неё вешаю все Events.

кстати ЛОЛ - я сделай класс Item унаследованный от Sprite(), но внутри была анимация (движение текста) всё работает Оо теперь вообще непонимаю в чём разница между MovieClip и Sprite (уже делал пост на эту тему но очевидных отличий так и не вижу), методы и свойства всё те же.

Старый 31.07.2007, 14:53
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 35  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
У Sprite нет методов MovieClip и он меньше памяти потребляет.

Старый 31.07.2007, 16:34
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 36  
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
Цитата:
Сообщение от __etc
У Sprite нет методов MovieClip и он меньше памяти потребляет.
Ну да я помню ты это писал. однако x, y, alpha, есть (и это хорошо, ачего нет то пока не использую) и даже анимацию крутить может...

кстати тут в тупик попал с этими слоями...
дело в том что я хотел при нажатии на какой нить из Item(); делать его поверх всех остальных... однако делать это хотел из самого Item(); пока ещё думаю как это сделать...

можно ли узнавать numChildren основного класса из Item(); ?

Старый 31.07.2007, 16:35
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 37  
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
Я говорю про методы play, stop, gotoAndStop и т.п.
Узнать numChildren можно обратившись к parent.

Старый 31.07.2007, 16:45
vapes вне форума Посмотреть профиль Отправить личное сообщение для vapes Найти все сообщения от vapes
  № 38  
vapes
 
Аватар для vapes

блогер
Регистрация: Nov 2006
Адрес: Минск
Сообщений: 370
Записей в блоге: 6
Отправить сообщение для vapes с помощью ICQ Отправить сообщение для vapes с помощью Skype™
я делал так (счас тожа пытаюсь програмить на ас3 с использованием флексовского фреймворка):создавал массив Item'ов добавлял их в основной класс, кажый Item хранит в себе индекс массива. А потом на mouseClick Item диспатчил Event где еще передавал свой индекс. Подписавшись на этот Event основной класс вытаскивал его поверх всех.

Старый 31.07.2007, 17:00
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 39  
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
клёво! для будущего поколения напишу что получилось
1) чтобы узнать numChildren - достаточно внутри вызываемой функции побочного класса написать
parent.numChildren
2) а чтобы узнать child номер слоя самого экземпляра (в моём случае Item()) достаточно написать
parent.getChildIndex(this)

а вот что в конечном счёте надо было мне
Код:
parent.swapChildrenAt (parent.getChildIndex(this), parent.numChildren-1);
спасибо за помощь! =) копаю дальше....


Последний раз редактировалось DRAGOnoid; 31.07.2007 в 17:14.
Старый 04.08.2007, 14:43
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 40  
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
Здравствуйте! Вот принёс ещё несколько вопросов, если позволите..

первое что интересует - я хочу задействовать колёсико мыши (или он же Scroll). За эту функцию отвечает MouseEvent.MOUSE_WHEEL. Хочу отслеживать на всей флешке, пишу:
Код:
addEventListener(MouseEvent.MOUSE_WHEEL, m);
private function m (event:MouseEvent):void {
trace(event);
}
Ctrl+Enter = непашет. Думаю хмм.. что не так... поставил вместо MOUSE_WHEEL - MOUSE_DOWN, заработало но, только если я кликаю на какой то предмет (на пустоту неработает) ставлю обратно MOUSE_WHEEL. Хотя нигде MOUSE_DOWN не стоит, но MOUSE_WHEEL заработает только если ты хотя бы 1 раз тыкнешь на какой нить предмет (и причём неважно какой), тогда заработает.
Вот собственно и первый вопрос - как мне сделать нормальный MOUSE_WHEEL?

Второе что интересует, так это всё та же больная тема с множеством муклипов на сцене

самый хороший способ это создать массив:
Код:
private var objects:Array = new Array();
а потом просто добавлять предмет привязываясь к нему:
Код:
var key = objects.length;
objects[key] = new Item(key, 6, 30, 0.3, 0.1);
objects[key].x=600;
objects[key].y=130;
field.addChild(objects[key]);
как видно из куска кода я передаю экземпляру предмета key, однако это не спасает в случае когда надо предмету самоудалиться. Первый случай я вызываю общую функцию в общем классе и она удаляет предмет, элемент массива и циклом for each переписывает ключи во всех предметах в соответствиис новыми key массива.

Нормальный способ самоудаления? или есть что по лучше?


Последний раз редактировалось DRAGOnoid; 04.08.2007 в 14:46.
Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 00:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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