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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 17.12.2010, 13:53
dmitriyabr вне форума Посмотреть профиль Отправить личное сообщение для dmitriyabr Найти все сообщения от dmitriyabr
  № 1  
Ответить с цитированием
dmitriyabr

Регистрация: Nov 2010
Сообщений: 18
Question занятые клетки

Помогите плиз.
Нужно сделать следующее:
есть картинка с сеткой 10 на 10 пикселей нужно, чтобы когда пользователь кликал на какую-то клеточку, происходил проверка: если эта клетка пустая, то она должна окраситься, если она занята, то ничего не должно происходить.
Сначала пробовал создавать базу данных с координатами занятых клеток, и через php проверял, но это очень много времени занимает(одна клеточка секунд 5)
Как сделать оптимально?

Старый 17.12.2010, 14:58
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 2  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Код AS3:
package  
{
	import flash.display.Graphics;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite
	{
		private const CELL_SIZE:int = 10;
 
		private var grid:Shape;
		private var squares:Sprite;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(event:Event = null):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
 
			createGrid();
			createSquares();
			stage.addEventListener(MouseEvent.CLICK, clickHandler);
		}
 
		private function createGrid():void
		{
			grid = new Shape();
			var g:Graphics = grid.graphics;
			g.lineStyle(1, 0xAAAAAA);
			var i:int = 1;
			while ((i * CELL_SIZE) < stage.stageWidth)
			{
				g.moveTo((i * CELL_SIZE), 0);
				g.lineTo((i * CELL_SIZE), stage.stageHeight);
				i++;
			}
			i = 1;
			while ((i * CELL_SIZE) < stage.stageHeight)
			{
				g.moveTo(0, (i * CELL_SIZE));
				g.lineTo(stage.stageWidth, (i * CELL_SIZE));
				i++;
			}
			addChild(grid);
		}
 
		private function createSquares():void
		{
			squares = new Sprite();
			addChild(squares);
		}
 
		private function clickHandler(event:MouseEvent):void
		{
			if (event.target is Stage)
			{
				var x_pos:int = Math.floor(event.stageX / CELL_SIZE) * CELL_SIZE;
				var y_pos:int = Math.floor(event.stageY / CELL_SIZE) * CELL_SIZE;
				squares.graphics.beginFill(0x000000);
				squares.graphics.drawRect(x_pos, y_pos, CELL_SIZE, CELL_SIZE);
				squares.graphics.endFill();
			}
		}
	}
}

Старый 20.12.2010, 17:45
dmitriyabr вне форума Посмотреть профиль Отправить личное сообщение для dmitriyabr Найти все сообщения от dmitriyabr
  № 3  
Ответить с цитированием
dmitriyabr

Регистрация: Nov 2010
Сообщений: 18
Спасибо!
и у меня два вопроса.
Во-первых, что делает
Код AS3:
if (event.target is Stage)
и как он определяет, что там нет квадрата

во-вторых, можно ли потом(и как) стереть эти квадраты(по кнопке)???

Старый 20.12.2010, 22:57
bav вне форума Посмотреть профиль Отправить личное сообщение для bav Найти все сообщения от bav
  № 4  
Ответить с цитированием
bav
 
Аватар для bav

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Почитайте про:
1) Свойство target класса Event и про класс в целом.
2) Оператор is.
3) Метод clear() класса Graphics.

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:30.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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