Форум программистов, компьютерный форум CyberForum.ru

Objective-C

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

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

19.01.2012, 20:11. Просмотров 853. Ответов 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. Второй момент, как мне и где хранить данные между кадрами, т.е. посчитали все, отрисовали, а теперь для подсчета следующего кадра хочу использовать данные предыдущего, как это осуществить?

Отсылать меня читать доки бессмысленно, мне нужно всего лишь решить конкретную задачу, т.е. общее понимание как и почему оно работает мне не нужно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2012, 20:11     Скринсейвер, вопросы про первичную инициализацию параметров
Посмотрите здесь:

Задание параметров объектам через цикл - Objective-C
Хочу задать текст объектам подобным образом: for(int i=0; i&lt;=; i++) { array.text = @&quot;алилуя&quot;; } Но компилятор...

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

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

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

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

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

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

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

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

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

Ибо может вы и напишите программу, она даже работать будет. Но будет написана в корне неверно. И грош цена такому решению.
Попытаюсь объяснить, я написал программу на процессинге, и хочу такой же скринсейвер себе на маке, но процессинг я знаю, а обжектив си я не знаю и планов на нем писать и использовать его дальше нет, т.е. мне просто нужно, чтобы работало, т.е. главное результат, который я увижу на экране. Считайте, что я хочу познакомится с девушкой в баре на одну ночь, а не найти себе спутницу жизни.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2012, 14:31     Скринсейвер, вопросы про первичную инициализацию параметров
Еще ссылки по теме:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
zulkis
681 / 608 / 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, там храниться не могут.
Спрашивайте, если что.
Yandex
Объявления
20.01.2012, 14:31     Скринсейвер, вопросы про первичную инициализацию параметров
Ответ Создать тему
Опции темы

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