С Новым годом! Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438

Создание корзины (as3)

03.08.2013, 20:40. Показов 1390. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый вечер.Ребят посоветуйте как сделать лучше.Нужно сделать "корзину",т.е. берем мышкой объект,передвигаем его ,и если он (объект вместе с мышкой) оказался над "корзиной" - удаляем его,при этом корзина подсвечивается(как кнопка при наведении). Событие MOUSE_OVER на "корзине" не работает если мышка захватила объект. Просто не очень хочется глобально слушать MOUSE_MOVE,отслеживать перемещения мыши,сравнивать с координатами корзины и делать проверку ещё на захват мыши какого либо объекта...Хочется что то вроде этого:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
basket.addEventListener(MouseEvent.MOUSE_OVER,mOverHandler);
var mOverHandler:Function = function(e:MouseEvent):void 
{
  if (selectedObject != null) {
   if (basket.hitTestObject(selectedObject)) {
       basket.play();
       //и т.д.
     }
  }
}
а т.к. как я уже упоминал ,событие MOUSE_OVER на "корзине" не работает если мышка захватила объект.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.08.2013, 20:40
Ответы с готовыми решениями:

Создание стрелки на AS3
Кликом мыши создаю начало для стрелки, потом перетаскиваю мышь и стрелка едет за мышью Картинка: Но если сделать стрелку под углом...

Создание пианино в as3
Добрый день, подскажите - как реализовать пианино в actionscript 3?

Создание инвентаря в связке as3+php+mysql
В приложении использую связку as3+php+mysql. По идее клиент должен грузить список предметов (точнее id предметов), которые есть у...

10
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
03.08.2013, 21:24
Мышиный события MOUSE_DOWN - начинаем тащить объект, MOUSE_UP - если над корзиной, удаляем тот объект, который тащим.
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
03.08.2013, 21:41  [ТС]
Так мне надо ещё при наведении на корзину,как бы подсвечивать её...В этом и вся загвоздка. Получается MOUSE_MOVE в любом случае придется слушать.((

Добавлено через 9 минут
Или можно как нибудь класс MouseEvent унаследовать и что то сделать?
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
03.08.2013, 22:04
А чем MouseEvent.MOUSE_OVER для наведения не подходит?
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
03.08.2013, 22:21  [ТС]
Так я же говорю,когда я мышкой перетаскиваю объект(selectedObject.drag()),то при наведении на корзину MOUSE_OVER не работает. Работает только при простом наведении мышкой.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
03.08.2013, 22:55
NowMatrix, думаю, это потому что перетаскиваемому объекту нужно свойство mouseEnable перевести в false, т.е. он не будет перекрывать корзину, соответственно сработает нужное событие. Только нужно понимать, что на такой объект никакие другие мышиные события не будут реагировать, пока данное свойство false.
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
03.08.2013, 23:05  [ТС]
Спасибо попробую.
0
15 / 1 / 2
Регистрация: 02.07.2013
Сообщений: 21
03.08.2013, 23:20
Удалено...
0
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
04.08.2013, 00:16  [ТС]
TanaTiX, только что протестировал,как вы посоветовали,но не работает к сожалению...

Добавлено через 2 минуты
Вот код если что(на момент наведения на корзину,mouseEnable у объекта равно false):
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
private function createBasket():void
        {
            basket = new Basket();
            basket.x = 100;
            basket.y = 500;
 
            basket.addEventListener(MouseEvent.MOUSE_OVER,mOverBasket);
            project.addChild(basket);
        }
        
        private function mOverBasket(e:MouseEvent):void
        {
            if (selectedMatchstick != null) 
            {
                if (basket.hitTestObject(selectedMatchstick))
                {
                    var colorInfo:ColorTransform = basket.transform.colorTransform;
                    colorInfo.color=  0x00CC00; 
                    basket.transform.colorTransform  = colorInfo;
                }
                
            }
        }
Как только я отпускаю объект,это событие сразу срабатывает.
0
Модератор
 Аватар для TanaTiX
2936 / 1795 / 180
Регистрация: 19.02.2011
Сообщений: 6,550
04.08.2013, 00:44
NowMatrix, лучше минимальный пример, иллюстрирующий проблему
1
98 / 81 / 16
Регистрация: 14.01.2011
Сообщений: 438
04.08.2013, 01:56  [ТС]
Все ,разобрался.Спасибо за помощь.

Добавлено через 57 минут
Кому интересно:
1.Создаем мувиклип c именем Basket.И редактируем его так:
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
package
{
    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.geom.ColorTransform;
    import flash.sensors.Accelerometer;
    
    public class Basket extends MovieClip
    {
        private var selectedMatchstick:Matchstick;
        private var isHit:Boolean;
        private var startColorInfo:ColorTransform; //цвет при создании корзины
        public static const BASKET_HIT:String = "BASKET_HIT"; //сообщаем другому классу о пересечении объекта
        
        public function Basket(stage:Stage)//передаем Stage основного класса
        {
            super();
            init(stage);
        }
        
        private function init(stage:Stage):void
        {
            stage.addEventListener(MouseEvent.MOUSE_UP, mUPBasket);
            startColorInfo = this.transform.colorTransform;
        }
        
        private function mUPBasket(e:MouseEvent):void
        {
            if (isHit) 
            {
                unRegisterListeners();
                isHit = false;
                this.dispatchEvent(new Event(Basket.BASKET_HIT)); //как раз диспетчерим при отпускании мыши "другому классу".А там удаляем объект,или скрываем
                this.transform.colorTransform = startColorInfo;
            }
        }
        
        private function onEnterFrame(e:Event):void
        {
            isHit = false;
            if (selectedMatchstick != null)
                if (this.hitTestObject(selectedMatchstick)) 
                {
                    //изменяем цвет корзины
                    var colorInfo:ColorTransform = this.transform.colorTransform;
                    //colorInfo.color=  0x00CC00; 
                    colorInfo.alphaOffset = -50;
                    this.transform.colorTransform  = colorInfo;
                    
                    isHit = true;
                }
                else 
                {
                    this.transform.colorTransform = startColorInfo;
                }
        }
        
        private function registerListeners():void
        {
            this.addEventListener(Event.ENTER_FRAME,onEnterFrame);
        }
        
        private function unRegisterListeners():void
        {
            this.removeEventListener(Event.ENTER_FRAME,onEnterFrame);
        }
        
        public function set SelectedMatchstick(match:Matchstick):void
        {
            selectedMatchstick = match;
            registerListeners();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.08.2013, 01:56
Помогаю со студенческими работами здесь

С AS1 на AS3
Всем доброго времени суток, очень приятно познакомиться. немного лирики о себе Когда-то писал (вроде бы даже не плохо) на AS1...

Спрайты в AS3
Я через объект Loader() загрузил картинку, и мне надо отобразить только часть картинки. как это можно сделать?

Cookie AS3
Здравствуйте. Подскажите, пожалуйста, как записать из флеша в куки (для дальнейшей работы с сайтом), и вообще возможно ли это? AS...

AS2 to AS3
Итак. Я уже давно давно занимаюсь программированием и подобным на ActionScript2.0 и вот тут понадобилось мне всё таки использование 3d...

MS Access и AS3
Добрый день, форумчане! Сейчас у меня проходит практика в учебном заведении и одно из заданий - написать органайзер с обязательным...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru