Форум программистов, компьютерный форум, киберфорум
Наши страницы

Objective-C

Войти
Регистрация
Восстановить пароль
 
Ravenenok
1 / 1 / 0
Регистрация: 24.12.2010
Сообщений: 37
#1

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

19.01.2012, 20:11. Просмотров 864. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2012, 20:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Скринсейвер, вопросы про первичную инициализацию параметров (Objective-C):

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

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

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

Вопросы про Java - Java
1) Что можно на нём написать? (можно дать примеры программ) 2) Можно ли прогать программы под винду? 3)Если можно прогать под винду, то...

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

вопросы про Linux - Linux
От у меня парочка вопросов: 1.Чи можно запустить программы от винди которые используют DirectX? 2.Чи потдержуе Linux файловую систему...

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

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

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

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

Ибо может вы и напишите программу, она даже работать будет. Но будет написана в корне неверно. И грош цена такому решению.
Попытаюсь объяснить, я написал программу на процессинге, и хочу такой же скринсейвер себе на маке, но процессинг я знаю, а обжектив си я не знаю и планов на нем писать и использовать его дальше нет, т.е. мне просто нужно, чтобы работало, т.е. главное результат, который я увижу на экране. Считайте, что я хочу познакомится с девушкой в баре на одну ночь, а не найти себе спутницу жизни.
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
20.01.2012, 14:31 #4
Ну тогда:
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
20.01.2012, 14:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 14:31
Привет! Вот еще темы с ответами:

вопросы про Паскаль - Pascal
добрые люди очень вас помочь мне. у меня проблема целый ряд задач и вопросов по паскалю . очень прошу мне помочь. Каков диапазон...

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

Вопросы про сокеты - C++
Пишу под винду. получать и отправлять данные вроде научился. (HTTP) вопросы: 1 - как мне получать ТОЛЬКО заголовки страниц ? if (...

У меня вопросы про строки в C# - C#
Здравствуйте! У меня две загвостки: 1. Нужно сохранять имена открываемых файлов(string) и при необходимости обращаться к ним как к...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru