Форум программистов, компьютерный форум, киберфорум
Наши страницы
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
cimbrik
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 7
1

Как работать с экранным объектом this

14.09.2014, 17:15. Просмотров 692. Ответов 13
Метки нет (Все метки)

Подскажите, пож.
У меня есть регионы на карте, все называются _clip? используются как (this). Я меняю цвет, трансформацию каждого. Можно ли сделать так, чтобы при масштабе одного региона, все остальные становились прозрачными. Заранее благодарю.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.09.2014, 17:15
Ответы с готовыми решениями:

Как можно сделать так, чтобы в PictureBox, можно было работать по экранным координатам(т.е. по пикселям)?
Как можно сделать так, чтобы в PictureBox, можно было работать по экранным...

Работать с картинкой как с объектом
У меня есть изображение, ну скажем человечек какой-нибудь и мне нужно этого...

Как работать с объектом Stream?
Хотел бы получить консультацию по работе со Stream - что 'прицепить'(ссылка)?,...

Как работать с объектом WebBrowser?
Подскажите как работать с объектом WebBrowser?

Как работать с данным объектом в JavaScript?
У меня есть данные следующего типа: ,,] Как преобразовать эти данные, в два...

13
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
14.09.2014, 19:34 2
Ваш вопрос меня довел просто до эйфорического смеха
Вы добавьте все регионы в массив, и по клику сохраните ссылку на клип в свойство и в цикле сравнивайте элементы массива с этим свойством. Если текущей элемент массива не клип по ссылке, то альфу ему ноль, если он, то пропускаем ( могу соврать break кажется или continue ).
1
cimbrik
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 7
15.09.2014, 07:13  [ТС] 3
Спасибо большое Я так и представляла себе эту задачу... Просто я не пишу, у меня другая специализация, вот и возник вопрос как именно этот цикл прописать. Но радостно, что логика не подвела, подводят знания
0
Theoryofgames
253 / 237 / 50
Регистрация: 20.12.2011
Сообщений: 707
15.09.2014, 11:00 4
Цитата Сообщение от bus Посмотреть сообщение
break кажется или continue
continue - переход к следующему витку итерации
break - досрочное завершение цикла
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
15.09.2014, 15:43 5
То есть, Вы не знаете, что такое массивы, как с ними и с циклами работать и не знаете, что такое событие?
Если нет, то я не знаю, как Вам помочь. Если Вы предложите скинуть проект, то я не смогу помочь, так как
у Вас скорее всего проект сделанный в adobe, в кадрах, а я в них вообще не понимаю.
0
cimbrik
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 7
15.09.2014, 16:46  [ТС] 6
Благодарю bus.

Меня больше интересует сама пропись функции, предложенной вами. С остальным понятно.

Добавлено через 1 минуту
Увы не досыпаю Цикл Если текущей элемент массива не клип по ссылке, то альфу ему ноль, если он, то пропускаем
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
15.09.2014, 17:11 7
Если что не понятно спрашивайте и в коде могут быть ошибки я писал на форуме.
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
// создаете массив и добавляете в него все области
var allRegions:Array = [];
allRegions.push( /*здксь ссылка на регион*/ );
 
// теперь создаете метод уменьшение альфы
function changeAlpha( region:DisplayObject ):void
{
    var length:int = allRegions.length;
    var item:DisplayObject;
 
    for(var i:int = 0; i < length; i++){
        item = allRegions[i];
 
        if( region == item )
            continue;
 
        item.alpha = 0;
    }
}
 
function restoreAlpha():void
{
    var length:int = allRegions.length;
    var item:DisplayObject;
 
    while( length-- > 0 ){
        item = allRegions[length];
 
        if( item.alpha == 0 ){
            item.alpha = 1;
        }
    }
}
 
// затем у Вас должен быть где-то обработчик кликов, типа
// function clickHandler( event:MouseEvent ):void{};
// Так вот в нем делаете -
function clickHandler( event:MouseEvent ):void
{
    var region:DisplayObject = event.target as DisplayObject;
    changeAlpha( region );
}
0
cimbrik
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 7
15.09.2014, 21:43  [ТС] 8
Огромное спасибо, bus.

Код понятен... Сейчас попробую на своем примере.

Добавлено через 4 часа 25 минут
Добрый вечер, bus. Просмотрите, пожалуйста мытарства... где ошибка?

Прикрутила код, выдает ошибку
1120: Обращение несуществующего свойства allReg.
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package src {
    
    import flash.display.*;
    import flash.events.*;
    import flash.events.KeyboardEvent;
    import flash.events.MouseEvent;
    import flash.geom.Rectangle
    import flash.utils.*;
    import flash.net.*;
    import flash.geom.*;
    import com.greensock.*;
    import com.greensock.plugins.*;
    import com.greensock.easing.*;
    
                    
    
        public class Region extends MovieClip {
        private var _url:String = "";
        private var _title:String = "";
        private var _clip:MovieClip;
        private var _center:MovieClip;
        private var _znak:MovieClip;
        
                                // создаем массив и добавляем в него все области
var allReg:Array = new Array();
allReg.push("clip");
 
// теперь создаете метод уменьшение альфы
function changeAlpha(reg:DisplayObject):void
{
    var length:int = allReg.length;
    var item:DisplayObject;
 
    for(var i:int = 0; i < length; i++){
        item = allReg[i];
 
        if(reg == item)
            continue;
 
        item.alpha = 0;
    }
}
 
function restoreAlpha():void
{
    var length:int = allReg.length;
    var item:DisplayObject;
 
    while(length-- > 0){
        item = allReg[length];
 
        if(item.alpha == 0){
            item.alpha = 1;
        }
    }
 }  
                
            
 
                         public function Region() {
            // constructor code
            _clip = this["clip"];
            _center = this["center"];
    
                            
            // Проверяем доступность сцены
            (stage) ? init() : addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(event:Event=null):void{               
            // Активируем плагины фильтров для TweenMax
            TweenPlugin.activate([DropShadowFilterPlugin, GlowFilterPlugin, ColorMatrixFilterPlugin]);
            // Добавляем прослушивателей поведения мыши
            this.addEventListener(MouseEvent.MOUSE_OVER, mouseListener);
            this.addEventListener(MouseEvent.MOUSE_OUT, mouseListener);
            this.addEventListener(MouseEvent.CLICK, mouseListener);
            this.addEventListener(MouseEvent.MOUSE_UP, mouseListener);
            this.addEventListener(MouseEvent.CLICK, onClick);
            this.mouseChildren = false;
            this.useHandCursor = true;
            this.buttonMode = true;
            }
                        
 
            function onClick( event:MouseEvent ):void
                       {
                        var reg:DisplayObject = event.target as DisplayObject;
                        changeAlpha(reg);
                        }
 
 
        
        // Расширяем на свойство url
        public function get url():String{
            return _url;
        }
        
        public function set url(value:String):void{
            _url = value;
        }
                        
                
        // Расширяем на свойство title
        public function get title():String{
            return _title;
        }
        
        public function set title(value:String):void{
            _title = value;
        }
        
        // Расширяем на свойство «только для чтения» pointGlobalCenter -  координаты относительно сцены у клипа _center.  
        public function get pointGlobalCenter():Point{
            return localToGlobal(new Point(_center.x, _center.y));
        }
        
        private function mouseListener(event:MouseEvent):void{
            switch(event.type){
                case "mouseOver": {
                    // Меняем индекс нашего клипа в родительском клипе на самый верхний индекс. Т. е. Выносим его поверх всех клипов в родительском ролике
                    this.parent.setChildIndex(this, this.parent.numChildren-1);
                    // Применим к клипу clip цвет и анимируем смену цвета
                    TweenMax.to(_clip, 0.5, {colorTransform:{tint:0xD02D28, tintAmount:0.8}});
                    // Применим к клипу эффект тени и анимируем появление тени. Этим самым создастя впячетление приподнятия клипа (района)
                    TweenMax.to(this, 0.5, {dropShadowFilter:{color:0x000000, alpha:1, blurX:7, blurY:7, strength:1, distance:5}, glowFilter:{color:0xffffff, alpha:1, blurX:4, blurY:4, strength:0.5}});
                    // Диспатчим сцену о том, что нужно показать всплывающую подсказку. В событием передадим объект (наш клип), который отправил событие, чтобы получить все данные связанные с этим клипом (url, title, imageUrl, description, pointGlobalCenter)
                    stage.dispatchEvent(new ShowToolTipEvent(ShowToolTipEvent.SHOW, this));
                    break;
                }
                case "mouseOut":{
                    // Возвращаем цвет клипу и убираем тень
                    TweenMax.to(_clip, 0.5, {colorTransform:{tint:0x00FFFF, tintAmount:0}});
                    TweenMax.to(this, 0.5, {dropShadowFilter:{color:0x000000, alpha:0, blurX:0, blurY:0, strength:0, distance:0}, glowFilter:{color:0x000000, alpha:0, blurX:0, blurY:0, strength:0}});
                    // Диспатчим сцену о скрытии тултипа (подсказки)
                    stage.dispatchEvent(new Event("hidetooltip"));
                    break;
                }
                
                
            }
        }
    }
}
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
15.09.2014, 23:14 9
Это кошмар! Для чего Вам эта карта вообще нужна? Вы свое будущие, так или иначе, хотите с анимацией связать?
Или это просто от нефига делать делаете?
0
cimbrik
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 7
15.09.2014, 23:31  [ТС] 10
Спасибо за ответ.

Нет, не собираюсь, это принудительные меры. Нужно обязательно доделать.... быстро... Пример был в исходниках на демиатре. Там в основе xml разметка, мне нужно заливать инфу, много. Не на что не претендую, просто прошу помочь прикрутить это действие, все остальное у меня уже почти доделано.

Заранее благодарна. Вот только пункт этот не пропускает. это вообще можно нормально прикрутить?

Добавлено через 4 минуты
Да. есть код еще в странице main.as.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
16.09.2014, 00:55 11
Сегодня после обеда сделаю. Ждите
0
cimbrik
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 7
16.09.2014, 12:22  [ТС] 12
Спасибо, bus. жду с нетерпением.
0
bus
34 / 34 / 3
Регистрация: 17.05.2014
Сообщений: 144
16.09.2014, 14:50 13
По клику на регионе, другие регионы становятся невидимыми... А видимыми они когда становятся?

Добавлено через 52 минуты
Идете в класс Region и находите метод-функцию mouseListener.
В нем будет инструкция switch, в её блоке case "mouseOver"
ActionScript 3
1
2
super.dispatchEvent( new Event(  "regionMouseOver") );//дописываете вот так
stage.dispatchEvent(new ShowToolTipEvent(ShowToolTipEvent.SHOW, this));
в блоке case "mouseOut"
ActionScript 3
1
2
super.dispatchEvent( new Event(  "regionMouseOut" ) );//дописываете вот так
stage.dispatchEvent(new Event("hidetooltip"));
Затем идете в класс Main и в методе init дописываете вот это
ActionScript 3
1
2
_maps.addEventListener( "regionMouseOver", maps_regionmouseoverHandler, true);
_maps.addEventListener( "regionMouseOut", maps_regionmouseoutHandler, true);
И затем где-то в теле класса Main дописываете
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
private function maps_regionmouseoverHandler(event:Event):void 
{
    var region:DisplayObject = event.target as DisplayObject;
    var length:int = _allRegions.length;
    var item:DisplayObject;
    
    if ( _allRegions.indexOf( region ) > -1 )
    {
        var tweeningArray:Array = [];
        
        while ( length-- > 0 )
        {
            item = _allRegions[length];
            
            if ( item == region )
                continue;
                
            tweeningArray.push(item);
        }
    }
        
    TweenMax.to(tweeningArray, 1.5, {alpha: 0})
}
 
private function maps_regionmouseoutHandler(event:Event):void 
{
    TweenMax.to(_allRegions, 1.5, {alpha: 1})
}
Так же ищите метод completeXml и дописываете
ActionScript 3
1
2
_region = _maps.getChildAt(r) as Region;
_allRegions.push( _region );// вот эту строчку
И затем говорите, так Вам надо или нет.




Если нужно, чтобы и река исчезала, то идете в библиотеку и дважды тыкаете на MapsClip.
Потом тыкаете по реке и идете во вкладку "свойства". Задаете instence name river_object.
Идете в классе Main в метод completeXml и дописываете
ActionScript 3
1
2
_allRegions.push( _maps.getChildByName(  "river_object" ) );
// Подписываем сцену на события появления и скрытия подсказки
0
cimbrik
0 / 0 / 0
Регистрация: 14.09.2014
Сообщений: 7
16.09.2014, 15:59  [ТС] 14
Спасибо, bus!

Сейчас разберусь. спрошу.
0
16.09.2014, 15:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.09.2014, 15:59

Как работать с WCF-объектом по значению?
имеется WCF-сервис (windows service), содержащий singleton коллекцию объектов....

Как вынести клас ButtonListener в отдельний ява файл? и как оттуда работать с объектом labe
Приветствую. Только начал изучать ООП и зашел в тупик. Вот пример кода: ...

Как работать с объектом selection ячейки таблицы word из приложения Excel в ВБА
Как обращаться к объекту selection ячейки таблицы word из приложения Excel, так...


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

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

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