|
С# Средство разработки на платформе .Net |
27.11.2012, 21:12
|
#181
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Ну а было сколько? если было намного больше покажи код.
Почему иногда некоторые переменные принимают значение Infinity?
|
деление на ноль или перебор.
|
(Offline)
|
|
27.11.2012, 22:53
|
#182
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
Сообщение от Dream
Ну а было сколько? если было намного больше покажи код.
деление на ноль или перебор.
|
было 2.5k++
А разве при делении на ноль не должно бросаться исключение? А перебор это... ?
|
(Offline)
|
|
27.11.2012, 22:55
|
#183
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
Код вот:
if (mymouse.LeftButton == ButtonState.Pressed)
{
try
{
texture2D.GetData<Color>(0, new Rectangle(mymouse.X, mymouse.Y, 1, 1), dat, 0, 1);
}
catch
{
//тут пока ничего
}
}
это все в draw
Как исключить бесконечность и в случае, если переменная ей равняется, присваивать переменной ноль? Есть ли встроенный тип для бесконечности?
|
(Offline)
|
|
27.11.2012, 23:21
|
#184
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
когда я говори код я имел ввиду хотя-бы класс Game твой.
Уласс целиком. ну или слишком много всего тогда конструктор,LoadContent,Initialize,Draw и Update.
ну и вообще если включать вертикальную синхронизацию - обычно больше 60 фпс никогда не будет. поэтому смысла думать об этом нету покачто
Если число с плавающей точкой(float) делить на 0 -исключение н е выбрасывается.
float.IsInfinity() float.IsNaN()
P.S. Не забывай использовать кнопку "Править" и редактируй свои сообщения - добавляя информацию, чтобы не было по несколько твоих постов подряд.
|
(Offline)
|
|
27.11.2012, 23:24
|
#185
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
класс, в смысле, класс целиком, или конструктор?
Да кстати можешь подсказать, что быстрее будет?
У меня переменные есть, значения которых только положительные. Как будет быстрее - оформить для них свойства, или каждый раз при изменении проверять, меньше ли они нуля?
Или, может еще способ есть?
|
(Offline)
|
|
27.11.2012, 23:31
|
#186
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Сообщение от wppt
класс, в смысле, класс целиком, или конструктор?
Да кстати можешь подсказать, что быстрее будет?
У меня переменные есть, значения которых только положительные. Как будет быстрее - оформить для них свойства, или каждый раз при изменении проверять, меньше ли они нуля?
Или, может еще способ есть?
|
Оформить для них свойство и в свойстве проверять значение
float PositiveValue { get{return _positiveValue;} set{ _positiveValue=MathHelper.Clamp(value,0,float.MaxValue); или if(value<0) value=0; _positiveValue=value; } }
|
(Offline)
|
|
28.11.2012, 19:37
|
#187
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
Спасибо! А как же все таки реализовать заливку? Это ж получается мне на вход метода нужно взять рендертаргет и рекурсивно менять цвета пикселей, пока цвет их равен старому? Не медленно ли будет? Попробую ка я сделать это, и посмотрю
что-то не работает:
void fill(int x, int y, Color newC, Color oldC,RenderTarget2D rend)
{
Color[] datoa = new Color[1];
rend.GetData<Color>(datoa,0,1);
if (x >= 0 && y >= 0 && x < rend.Width && y < rend.Height && datoa[0] == oldC && datoa[0] != newC)
{
datoa[0] = newC;
fill(x - 1, y, newC, oldC, rend);
fill(x + 1, y, newC, oldC, rend);
fill(x, y - 1, newC, oldC, rend);
fill(x, y + 1, newC, oldC, rend);
}
else return;
}
This rectangle is to large or too small и т.д.
Или нужно через гетдата всю текстуру передавать?
Последний раз редактировалось wppt, 29.11.2012 в 16:41.
|
(Offline)
|
|
01.12.2012, 17:23
|
#188
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
можете подсказать, возможно ли перегрузить унарный оператор +(не ++, именно +)?
|
(Offline)
|
|
01.12.2012, 17:55
|
#189
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
public static CType operator +(CType i1,CType i2)
{
return resultCType;
}
|
По поводу заливки - ты всегда берёшь только первый пиксель.
Color[] colors = new Color[1]; GetTexture().GetData(0,new Rectangle(x,y,1,1),colors, 0, 1);
|
(Offline)
|
|
01.12.2012, 20:37
|
#190
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
только первый? А как надо?
Насчет перегрузки - как перегрузить унарный плюс?
|
(Offline)
|
|
02.12.2012, 02:27
|
#191
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Сообщение от wppt
только первый? А как надо?
Насчет перегрузки - как перегрузить унарный плюс?
|
в том коде что я дал убераем один параметер
По поводу как надо - я дал же код "как над"
|
(Offline)
|
|
02.12.2012, 14:25
|
#192
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
спасибо, попробую!
Что то программа зависает
А что же в сетдате писать?
|
(Offline)
|
|
03.12.2012, 04:57
|
#193
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
Сообщение от wppt
Что то программа зависает ?
|
ну,завивисает наверно на fill, ты же никаким пикселям не меняешь цвет, вот оно и бесконечно туда сюда ходит
|
(Offline)
|
|
03.12.2012, 16:18
|
#194
|
Нуждающийся
Регистрация: 25.11.2012
Сообщений: 83
Написано 2 полезных сообщений (для 2 пользователей)
|
Ответ: Вопросы по XNA.
Больше не зависает, ну а что же в сетдата писать?
Не знаю, у меня вообще бред получается:
//lload content
TextData = new Color[800 * 600];
maprender.GetData<Color>(TextData);
//сам метод
void fill(int x, int y, Color newC, Color oldC,RenderTarget2D rend)
{
Color[] colors = new Color[1];
rend.GetData(0, new Rectangle(x, y, 1, 1), colors, 0, 1);
if (x >= 0 && y >= 0 && x < rend.Width && y < rend.Height && colors[0] == oldC && colors[0] != newC)
{
TextData[y * rend.Width + x] = colors[0];
rend.SetData<Color>(TextData);
fill(x - 1, y, newC, oldC, rend);
fill(x + 1, y, newC, oldC, rend);
fill(x, y - 1, newC, oldC, rend);
fill(x, y + 1, newC, oldC, rend);
}
else return;
}
при нажатии кнопки мыши должен вызываться метод. Но экран окрашивается в cornflowerblue и все
|
(Offline)
|
|
03.12.2012, 18:38
|
#195
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Вопросы по XNA.
без всего проекта ничем не могу помочь
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:10.
|