Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 17.09.2012
Сообщений: 11
AS 3.0

Квадратная область

17.09.2012, 07:24. Показов 1289. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени!
Уважаемый знатоки, пожалуйста помогите решить задачу на ActionScript 3.0.
Задача состоит в следующем:

Нужна квадратная область, поделена на еще квадраты, при этом при клике на один из квадратов нужно чтобы срабатывало событие.

Мучился, мучился получилась какая - то ерунда.



Не срабатывает событие...

Квадрат самый большой, поворачивал так:

ActionScript 3
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
var circle:Rect = new Rect(),
sprite:Sprite = new Sprite();
 
sprite.rotationY = -43;
sprite.rotationX = -43;
sprite.rotationZ = -36;
 
sprite.addChild(circle);
 
for (var si:int = 0; si < 12; ++si) {
    for (var sl:uint = 0; sl < 12; ++sl) {
        var c:Rect = new Rect("rect1");
        c.x = 45 * si;
        c.y = 45 * sl;
        c.addEventListener(MouseEvent.CLICK, evt);
        circle.addChild(c);
    }
}
 
super.addChild(sprite);
 
 
 
private function evt(event:Event):void {
    trace(event.target);
} // не срабатывает
Ну это видать не верно...

Будьте так любезны, помогите пожалуйста, а то уже какой день не могу никак понять.


Тут еще такая проблема, если сделать события.

ActionScript 3
1
super.stage.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseWheel);
onMouseDown
onMouseUp

То квадрат начинает выкоблучиваться, =) что собственно не нужно...

Как его сделать по центру всегда?

Объясните пожалуйста...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.09.2012, 07:24
Ответы с готовыми решениями:

Записать логическое выражение, описывающее область определения и область изменения функции y=1/x^2
Нужна ваша помощь, господа-программисты! Спасибо огромное, заранее.

Определить, попадает ли заданная точка в заштрихованную область (границы не входят в область)
Условие: Напишите программу, которая определяет, попадает ли заданная точка в заштрихованную область. Границы не входят в область. Не...

Найти одну из линейных функций, отображающих область Dz на область Dw , если:
Посмотрите, пожалуйста, правильно ли я начертила? не уверена в знаке: если по часовой стрелке то плюс?

4
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
17.09.2012, 12:32
Что есть Rect? Каким образом он создан?
А в коде каша: по названиям переменных совсем не понятно их предназначение.

Цитата Сообщение от act Посмотреть сообщение
квадрат начинает выкоблучиваться
это совсем не понятно

Цитата Сообщение от act Посмотреть сообщение
Как его сделать по центру всегда?
Рассчитать его размеры, сравнить с размерами сцены (stage.stageWidth и stage.stageHeight) и поместить в центр координат. Затем не двигать.

Примерно так
ActionScript 3
1
2
obj.x = (stage.stageWidth - obj.width)/2;
obj.y = (stage.stageHeight - obj.height)/2;
0
1 / 1 / 0
Регистрация: 17.09.2012
Сообщений: 11
18.09.2012, 07:55  [ТС]
Можете пожалуйста показать не большой код!
С таким квадратом большим?
В таком же положении как на скриншоте.
Разметка уже не нужна...

И чтобы на нем был маленький еще квадрат, чтобы его мышью передвигать можно было...

Вот я написал, но он тупит...(

ActionScript 3
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
68
69
70
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Shape;
import flash.events.*;
 
    public class Main extends Sprite {
 
        private var offsetX:int,
                    offsetY:int,
                    displayObject:DisplayObject;
        
        public function Main():void {
            this.init();
        }
 
        private function init():void {
 
            var rectDrag:Sprite = new Sprite();
            
            rectDrag.graphics.beginFill(0x000000); 
            rectDrag.graphics.drawRect(0, 0, 45, 45); 
            rectDrag.graphics.endFill();
            
            var rect:Sprite = new Sprite();
            
            rect.graphics.lineStyle(1, 0x006600); 
            rect.graphics.drawRect(0, 0, 400, 400); 
            rect.graphics.endFill();
 
            var sprite:Sprite = new Sprite();
 
            sprite.y = 300;
            sprite.x = 50;
 
            sprite.rotationY = -43;
            sprite.rotationX = -43;
            sprite.rotationZ = -36;
            
            rect.addChild(rectDrag);
            
            rectDrag.addEventListener(MouseEvent.MOUSE_DOWN, this.startd);
            rectDrag.addEventListener(MouseEvent.MOUSE_UP, this.stopd);
            
            sprite.addChild(rect);
            super.addChild(sprite);
        }
 
        private function startd(event:MouseEvent):void {
            this.displayObject = DisplayObject(event.target);
            
            this.offsetX = event.stageX - this.displayObject.x;
            this.offsetY = event.stageY - this.displayObject.y;
 
            super.stage.addEventListener(MouseEvent.MOUSE_MOVE, dragg); 
        }
        
        private function stopd(event:MouseEvent):void {
            super.stage.removeEventListener(MouseEvent.MOUSE_MOVE, this.dragg);
        }
        
        private function dragg(event:MouseEvent):void { 
            this.displayObject.x = event.stageX - this.offsetX;
            this.displayObject.y = event.stageY - this.offsetY;
            
            event.updateAfterEvent();
        }
    }
}
Я уже измучился помогите, как сделать, чтобы нормально работало движение по данной области...?

Желательно бы еще, чтобы за границы не выходило... Было бы круто...


Может быть другой выход есть!?
Очень нужно это...

Добавлено через 18 часов 30 секунд
Не может быть, чтобы никто не знал.

Если убрать:

ActionScript 3
1
2
3
sprite.rotationY = -43;
sprite.rotationX = -43;
sprite.rotationZ = -36;
То движение происходит нормально.

В чем может быть проблема?!(

Пожалуйста подскажите.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,552
18.09.2012, 14:06
ActionScript 3
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
 
    public class Main2 extends Sprite {
 
        private var offsetX:int,
                    offsetY:int,
                    displayObject:Sprite;
        private var sprite:Sprite;
        
        public function Main2():void {
            this.init();
        }
 
        private function init():void {
 
            var rectDrag:Sprite = new Sprite();
            
            rectDrag.graphics.beginFill(0x000000); 
            rectDrag.graphics.drawRect(0, 0, 45, 45); 
            rectDrag.graphics.endFill();
            
            var rect:Sprite = new Sprite();
            
            rect.graphics.lineStyle(1, 0x006600); 
            rect.graphics.drawRect(0, 0, 400, 400); 
            rect.graphics.endFill();
 
            sprite = new Sprite();
 
            sprite.y = 300;
            sprite.x = 50;
 
            sprite.rotationY = -43;
            sprite.rotationX = -43;
            sprite.rotationZ = -36;
            
            rect.addChild(rectDrag);
            
            rectDrag.addEventListener(MouseEvent.MOUSE_DOWN, startd);
            stage.addEventListener(MouseEvent.MOUSE_UP, stopd);
            
            sprite.addChild(rect);
            addChild(sprite);
        }
 
        private function startd(event:MouseEvent):void {
           displayObject = event.target as Sprite;
            
            offsetX = displayObject.mouseX;
            offsetY = displayObject.mouseY;
            super.stage.addEventListener(MouseEvent.MOUSE_MOVE, dragg); 
        }
        
        private function stopd(event:MouseEvent):void {
            displayObject.stopDrag();
            stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragg);
        }
        
        private function dragg(event:MouseEvent):void { 
            event.updateAfterEvent();
            displayObject.x = sprite.mouseX - offsetX;
            displayObject.y = sprite.mouseY - offsetY;
            
            if (displayObject.x < 0) {
                displayObject.x = 0;
            }
            if (displayObject.y < 0) {
                displayObject.y = 0;
            }
            if (displayObject.x > 355) {
                displayObject.x = 355;
            }
            if (displayObject.y > 355) {
                displayObject.y = 355;
            }
            
           
        }
    }
}
Немного подправил. Правда пришлось захардкодить "355". Судя по всему это связано как раз с теми поворотами, а, как известно, размеры объекта при вращении могут меняться.
1
1 / 1 / 0
Регистрация: 17.09.2012
Сообщений: 11
18.09.2012, 17:25  [ТС]
Вооощем переделал и заработало)

ActionScript 3
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
68
69
70
71
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.display.Shape;
import flash.events.*;
 
    public class Main extends Sprite {
        private var sprite:Sprite = new Sprite(),
                    rectDrag:Sprite = new Sprite(),
                    rect:Sprite = new Sprite();
        private var displayObject:DisplayObject;
        
        public function Main():void {
            this.init();
        }
 
        private function init():void {
            
            this.rectDrag.graphics.beginFill(0x000000); 
            this.rectDrag.graphics.drawRect(0, 0, 45, 45); 
            this.rectDrag.graphics.endFill();
 
            this.rect.graphics.lineStyle(1, 0x006600); 
            this.rect.graphics.drawRect(0, 0, 400, 400); 
            this.rect.graphics.endFill();
 
            this.sprite.y = 300;
            this.sprite.x = 50;
 
            this.sprite.rotationY = -43;
            this.sprite.rotationX = -43;
            this.sprite.rotationZ = -36;
            
            this.rect.addChild(this.rectDrag);
            
            this.rectDrag.addEventListener(MouseEvent.MOUSE_DOWN, this.startd);
            this.rectDrag.addEventListener(MouseEvent.MOUSE_UP, this.stopd);
            
            this.sprite.addChild(this.rect);
            super.addChild(this.sprite);
        }
 
        private function startd(event:MouseEvent):void {
            this.displayObject = DisplayObject(event.target);
            super.stage.addEventListener(MouseEvent.MOUSE_MOVE, this.dragg); 
        }
        
        private function stopd(event:MouseEvent):void {
            super.stage.removeEventListener(MouseEvent.MOUSE_MOVE, this.dragg);
        }
        
        private function dragg(event:MouseEvent):void {
            this.displayObject.x = this.sprite.mouseX - 20;
            this.displayObject.y = this.sprite.mouseY - 20;
            if (displayObject.x < 0) {
                displayObject.x = 0;
            }
            if (displayObject.y < 0) {
                displayObject.y = 0;
            }
            if (displayObject.x > 355) {
                displayObject.x = 355;
            }
            if (displayObject.y > 355) {
                displayObject.y = 355;
            }
            event.updateAfterEvent();
        }
    }
}

Сказочна благодарен))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2012, 17:25
Помогаю со студенческими работами здесь

Область памяти для переменной и её значения. Это одна и та же область?
Добрый день! Задумался над таким вопросом. Есть переменная, а есть её значение. При создани переменной (без инициализации), насколько я...

Заполнить заштрихованную область матрицы нулями, а остальную область единицами
Напишите метод static int Zero (out int a, int n), который заполняет заштрихованную область матрицы нулями, а другую область — единицами...

Найти область определения, область значения, инверсию, и композиции данного бинарного отношения:
Вот собственно бинарное отношение \rho ={(x,y) | x,y \epsilon R и x^2+y^2&gt;8} Вот композиции \rho *\rho , \rho *\rho^-1, \rho^-1 *\rho....

Клик по кнопке осуществлять не при попадании курсора в ее область, а в область картинки на ней
Делаю вместо кнопки картинку. Хочу чтобы когда курсор наводишь на кнопку , нажатие работало не когда попадаешь в квадратную область кнопки,...

Установить область определения и область значения операторов, найти образ x0 при данном отображении
Здравствуйте,помогите пожалуйста...нужно установить область определения и область значения операторов.найти образ x0 при данном...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru