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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.10.2010, 05:05
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 11  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Всё понятно, но такой вариант породил одну проблемку:


Если я делаю так
Код AS3:
addChild (dial);	//добавляем циферблат (jpg) на сцену
 
addChild (hourHand);
addChild (minHand);
addChild (secHand);
 
x = y = 148;
то x = y = 148 срабатывает и для dial, который должен стоять в нуле.


Если пихнуть его на stage
Код AS3:
stage.addChild(dial);	//добавляем циферблат (jpg) на сцену
 
addChild (hourHand);
addChild (minHand);
addChild (secHand);
 
x = y = 148;
то всё добавляется правильно, но стрелок я не вижу за dial'ом.


Пока вариант решения такой
Код AS3:
stage.addChild (dial);	//добавляем циферблат (jpg) на сцену
 
secHand.x = secHand.y = 148;
minHand.x = minHand.y = 148;
hourHand.x = hourHand.y = 148;
 
stage.addChild (hourHand);
stage.addChild (minHand);
stage.addChild (secHand);
однако приходится шесть раз присваивать одно и тоже значение и класть всё на stage.


Может есть более разумный вариант как разместить стрелки по центру, а dial в нуле?

Старый 29.10.2010, 08:31
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 12  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Почему именно на stage?
__________________
тут я

Старый 29.10.2010, 21:25
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 13  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
В принципе неважно куда. Главное чтобы стрелки были в центре, а циферблат в нуле.

Старый 30.10.2010, 00:46
deamoK вне форума Посмотреть профиль Отправить личное сообщение для deamoK Найти все сообщения от deamoK
  № 14  
Ответить с цитированием
deamoK
[+1 16.12.11]
 
Аватар для deamoK

Регистрация: Sep 2010
Сообщений: 57
Цитата:
Сообщение от tsarapkabel Посмотреть сообщение
В принципе неважно куда. Главное чтобы стрелки были в центре, а циферблат в нуле.
Помоему удобно использовать ноль как центр...

Код AS1/AS2:
package  
{
	import flash.display.Bitmap;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
 
	public class SimpleClock extends Sprite
	{
		private var minHand:Shape;
		private var secHand:Shape
		private var timer:Timer;
		private var date:Date;
		private var border:Bitmap;
		private var hourHand:Shape;
 
		private var sec:int;
		private var min:int;
		private var hour:int;
 
		[Embed(source="D:/Pictures/trad.png")]
		private var borderClass:Class
 
		public function SimpleClock() 
		{
			secHand = new Shape();
			minHand = new Shape();
			hourHand = new Shape()
			border = new borderClass();
			timer = new Timer(1000);
 
			border.x = -border.width / 2;
			border.y = -border.height / 2
 
			secHand.graphics.beginFill(0xFF0000);
			secHand.graphics.drawRect( -1, -50, 2, 70);
			secHand.graphics.beginFill(0xFF0000);
			secHand.graphics.drawCircle(0, 0, 5)
 
			minHand.graphics.beginFill(0);
			minHand.graphics.drawRect(-2, -40, 4, 40);
 
			hourHand.graphics.beginFill(0xCCCCCC)
			hourHand.graphics.drawRect(-2, -30, 4, 30)
 
			addChild(border);
			addChild(hourHand);
			addChild(minHand);
			addChild(secHand);			
 
			x = y = 350;
			timer.addEventListener(TimerEvent.TIMER, onTick);
			timer.start();
			onTick()
		}
 
		private function onTick(e:TimerEvent = null):void 
		{
			date = new Date();
			sec = date.getSeconds();
			min = date.getMinutes();
			hour = date.getHours();
 
			secHand.rotation = sec * 6;
			minHand.rotation = min * 6 + sec / 10;
			hourHand.rotation = hour * 30 + min / 2;
		}
	}
}
Можно перемещать контейнер куда угодно, все стрелки с циферблатом будут на месте

Старый 30.10.2010, 20:53
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 15  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Спасибо, deamoK, всё понял!

Благодарю всех участников обсуждения за помощь!

Старый 15.11.2010, 09:30
Psy486 вне форума Посмотреть профиль Отправить личное сообщение для Psy486 Найти все сообщения от Psy486
  № 16  
Ответить с цитированием
Psy486

Регистрация: Mar 2009
Сообщений: 11
Добрый день! (хотя если учесть только один выходной, не очень и добрый =))
Я по честному нашел поиском тему и решил новые темы не плодить, да просить прям тута.

У меня такая проблемка с аналоговыми часами, для меня странная.
Раньше использовал АС2, а тут проект притащили на АС3 и надо часики сделать.
Часики-то сделал, но к сожалению их надо повернуть влево на 45°
Когда я их проворачиваю, получается, что флешу это до задницы и он стрелки ставит относительно стандартной вертикали.
Как сделать так, чтоб он ставил стрелки относительно часов и как бы я их ни проворачивал, он брал за основу положение стрелок или еще как-то (я не совсем понимаю что ему надо.)
Часики прилагаю.
Вложения
Тип файла: zip clock_AS3.zip (36.7 Кб, 34 просмотров)

Старый 15.11.2010, 09:51
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 17  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Psy486, исходник не смотрел, но вероятно вы добавляете стрелки НА циферблат, а не В контейнер с циферблатом.

Добавлено через 7 минут
Исходник посмотрел. Фу-фу-фу, плохой исходник - код в кадре, классы не используются вообще. И да, по поводу контейнера я был прав. Посмотрите, как реализованы часы в этой теме. И не пишите код в кадрах.
__________________
тут я

Старый 15.11.2010, 10:14
Psy486 вне форума Посмотреть профиль Отправить личное сообщение для Psy486 Найти все сообщения от Psy486
  № 18  
Ответить с цитированием
Psy486

Регистрация: Mar 2009
Сообщений: 11
КорДум О как. Ну я АС3 вообще не использовал никогда и потому не вразумию как правильно =)
ОК, спасибы, пойду сейчас код тут смотреть и интегрировать О_о

Добавлено через 2 часа 41 минуту
Чего-то не знаючи АС3 сталкиваюсь с некоторыми проблемами...
Может есть у кого такой хороший исходник часиков, которые как ни верти, а правильные, чтоб я на примере глянул как на самом деле делать надо?
Буду афигительно благодарен и скажу спасибо от всей души!!!

Старый 15.11.2010, 13:36
deamoK вне форума Посмотреть профиль Отправить личное сообщение для deamoK Найти все сообщения от deamoK
  № 19  
Ответить с цитированием
deamoK
[+1 16.12.11]
 
Аватар для deamoK

Регистрация: Sep 2010
Сообщений: 57
5ью постами выше, есть код
Цитата:
Можно перемещать контейнер куда угодно, все стрелки с циферблатом будут на месте
, вертеть тоже можно

Старый 15.11.2010, 13:40
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 20  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Psy486, судя по всему, вы не писали никогда на ас2, только на ас1. А там подходы достаточно похожие. Классы ас2 и классы ас3 очень схожи, если в ас2, вместо прямого назначения обработчикам события методов, назначать эти методы через Delegate с ссылкой на главный объект, к которому присобачен класс (this, как правило). Так что...что тут посоветовать - книгу Мука?
__________________
тут я

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

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

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


 


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


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