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

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

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

Регистрация: May 2006
Сообщений: 79
По умолчанию работа с цветом \16-ричные цифры

Код:
trace((0x7a <<24));
trace((0x8a <<24));
trace((0x9a <<24));
на выходе:
Цитата:
2046820352
-1979711488
-1711276032
или же в 16-ричном виде:
Цитата:
7a000000
-76000000
-66000000

почему так происходит?
как после этого, спрашивается, мне задать цвет в формате 0хAARRGGBB ? исключительно стрингом?

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

Регистрация: Jul 2008
Адрес: Украина, Киев
Сообщений: 253
Ну примерно вот так:
Код:
var color:uint = 0;

var r, g, b, a:uint;

a = 128;
r = 128;
g = 128;
b = 128;

a = a << 24;
r = r << 16;
g = g << 8;

color = color | a;
trace(color);
color = color | r;
trace(color);
color = color | g;
trace(color);
color = color | b;
trace(color);
2147483648 - 0x80000000
2155872256 - 0x80800000
2155905024 - 0x80808000
2155905152 - 0x80808080

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
потому что это signed bitwise shift. Это значит, что принимает во внимание знак и работает с int а не uint. Вот ток unsigned left shift не существует, есть только правый...
Я думаю, что в вашей ситуации это поможет:
Код:
trace(uint(0x7a <<24));
trace(uint(0x8a <<24));
trace(uint(0x9a <<24));
__________________
Hell is the possibility of sanity

Старый 25.08.2008, 19:29
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 4  
Ответить с цитированием
gen4

Регистрация: May 2006
Сообщений: 79
Да, дело в типе.
Большое спасибо

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

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
>>как после этого, спрашивается, мне задать цвет в формате 0хAARRGGBB ? исключительно стрингом?

Я исключительно стрингом задавал, так легче
Код:
var a = 0x77;
var r = 0x66;
var g = 0x60;
var b = 0x06;

var res_color = int("0x"+f_f(a)+f_f(r)+f_f(g)+f_f(b));

trace("Шеснадцатиричный "+res_color.toString(16));

function f_f(ff_color:int)
{
var res_str = "0", w_str = ff_color.toString(16);
if (w_str.length>1) res_str = w_str; else  res_str = res_str+w_str; return res_str; 
}
на выходе имеем шеснадцатиричный цвет
output
Шеснадцатиричный 77666006

Старый 25.08.2008, 19:43
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 6  
Ответить с цитированием
gen4

Регистрация: May 2006
Сообщений: 79
Alex Lexcuk: такой способ тормозной, по сравнению, например с
Код:
var col:uint=(newAlpha<<24)+0xFFFFFF

Старый 25.08.2008, 19:41
gen4 вне форума Посмотреть профиль Отправить личное сообщение для gen4 Найти все сообщения от gen4
  № 7  
Ответить с цитированием
gen4

Регистрация: May 2006
Сообщений: 79
Да, дело в типе.
Большое спасибо

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

Регистрация: Sep 2002
Сообщений: 30,787
Alex Lexcuk, учите побитовые операции.

Код:
var a:uint = 0x77;
var r:uint = 0x66;
var g:uint = 0x60;
var b:uint = 0x06;
var color:uint = ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
trace(color.toString(16));


Последний раз редактировалось etc; 25.08.2008 в 20:15.
Создать новую тему Ответ Часовой пояс GMT +4, время: 10:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

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

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


 


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


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