С Новым годом! Форум программистов, компьютерный форум, киберфорум
Objective-C
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 37

Скринсейвер, вопросы про первичную инициализацию параметров

19.01.2012, 20:11. Показов 1243. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сразу скажу, objective-c я не знаю, но мне очень нужно сделать простенький скринсейвер.

Сейчас он имеет такой код и работает:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#import "BlackWhiteBoxesView.h"
 
@implementation BlackWhiteBoxesView
 
- (id)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview
{
    self = [super initWithFrame:frame isPreview:isPreview];
    if (self) {
        [self setAnimationTimeInterval:1/30.0];
    }
  
    return self;
}
 
- (void)startAnimation
{
    [super startAnimation];
}
 
- (void)stopAnimation
{
    [super stopAnimation];
}
 
- (void)drawRect:(NSRect)rect
{
    [super drawRect:rect];
}
 
- (void)animateOneFrame
{
    NSBezierPath *path;
    NSRect rect;
    NSSize size;
    NSColor *color;
    
    size = [self bounds].size;
 
    for (int w=0; w<size.width; w=w+40)
    {
        for (int h=0; h<size.height; h=h+40)
        {
            if (SSRandomIntBetween( 0, 1 ) == 0)
                color = [NSColor blackColor];
            else
                color = [NSColor whiteColor];
            [color set];
            rect = NSMakeRect(w, h, 40, 40);
            path = [NSBezierPath bezierPathWithRect:rect];
            [path fill];
            
        }
    }
}
 
 
- (BOOL)hasConfigureSheet
{
    return NO;
}
 
- (NSWindow*)configureSheet
{
    return nil;
}
 
@end
1. Я не понимаю как и где нужно создать массив, в который бы случайным образом записывались значения цвета квадрата и размера квадрата, при этом, чтобы массив создался 1 раз при запуске скринсейвера, но брать данные из него я мог в любой момент?
2. Второй момент, как мне и где хранить данные между кадрами, т.е. посчитали все, отрисовали, а теперь для подсчета следующего кадра хочу использовать данные предыдущего, как это осуществить?

Отсылать меня читать доки бессмысленно, мне нужно всего лишь решить конкретную задачу, т.е. общее понимание как и почему оно работает мне не нужно.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.01.2012, 20:11
Ответы с готовыми решениями:

Вопрос про инициализацию
Всем привет. Народ подскажите, хочу сделать клиент-серверное приложение, как сделать чтобы в TForm сделать окошко и в этом окошке...

Объясните про инициализацию
Реализовал свой класс для строки (в качестве практики изучения c++) class TString { char* p; int size; public: ...

Про позднюю инициализацию std::thread
Я занимаюсь проигрыванием MIDI-файлов. В общем: есть мультимедиа-таймер, который каждую миллисекунду вызывает метод класса-проигрывателя,...

3
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
20.01.2012, 07:54
Цитата Сообщение от Ravenenok Посмотреть сообщение
мне нужно всего лишь решить конкретную задачу, т.е. общее понимание как и почему оно работает мне не нужно.
А как Вы собрались решать "конкретную задачу" без "общего понимания КАК и ПОЧЕМУ оно работает"?

Чтобы решить чтолибо, нужно понять КАК, а чтобы понять КАК, нужно изучить ПОЧЕМУ происходит именно так.

Ибо может вы и напишите программу, она даже работать будет. Но будет написана в корне неверно. И грош цена такому решению.
0
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 37
20.01.2012, 10:50  [ТС]
Цитата Сообщение от zulkis Посмотреть сообщение
А как Вы собрались решать "конкретную задачу" без "общего понимания КАК и ПОЧЕМУ оно работает"?

Чтобы решить чтолибо, нужно понять КАК, а чтобы понять КАК, нужно изучить ПОЧЕМУ происходит именно так.

Ибо может вы и напишите программу, она даже работать будет. Но будет написана в корне неверно. И грош цена такому решению.
Попытаюсь объяснить, я написал программу на процессинге, и хочу такой же скринсейвер себе на маке, но процессинг я знаю, а обжектив си я не знаю и планов на нем писать и использовать его дальше нет, т.е. мне просто нужно, чтобы работало, т.е. главное результат, который я увижу на экране. Считайте, что я хочу познакомится с девушкой в баре на одну ночь, а не найти себе спутницу жизни.
0
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
20.01.2012, 14:31
Ну тогда:
1. Создавайте массив и забивайте данными в -initWith...Blah. Удаляйте (-release) в -dealloc'e
2. Опять же, создайте в init массив NSMutableArray *tempRectsArray, в который после каждого подсчета будете
Objective-C
1
2
3
4
[tempRectsArray removeAllObjects];
for (...) {
[tempRectsArray addObject:какойто ваш квадрат];
}
Либо, если вам более удобно сразу писать данные поверх, при изменении определенных квадратов, воспользуйтесь методом
Objective-C
1
[tempRectsArray replaceObjectAtIndex:oldRect withObject:newRect];
Для того, чтобы массивы были всегда "видны", объявите их в интерфейсе к своему классу.
Objective-C
1
NSMutableArray *rectsArray, *tempRectsArray;
А дальнейший просчет и отображение - уже как говорится, дело техники.

Учтите, что данные типы массивов могут хранить только объекты. Структуры типа CGRect, либо просто int, там храниться не могут.
Спрашивайте, если что.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.01.2012, 14:31
Помогаю со студенческими работами здесь

Про инициализацию объекта в поле класса
Извините за тупой вопрос. Но,почему нельзя инициализировать объект в поле класса? у меня есть класс Sounds с параметризованным...

Вопросы про PayPal
Всем привет! Системой PayPal никогда не пользовался, но вот появилась необходимость и сразу появились вопросы. Обязательно ли указывать...

Вопросы про Python
Есть четыре вопроса: 1) Собираются ли Python 3.x делать быстрее? 2) Когда закончится поддержка Python 2.7? 3) Почему Python 3.x...

Глупые вопросы про + и -
Чувствую себя полным кретином. Долго ни у кого не решался спросить, но все же случайно забрел сюда. Может, судьба? 1. Из любого...

вопросы про CMS
Всем привет, у меня есть два вопроса: 1) Нужно ли использовать CMS или лучше самому писать код? ( программирование я знаю) 2) Какая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru