Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Работа с маской (http://www.flasher.ru/forum/showthread.php?t=144981)

x2com 26.09.2010 22:07

Работа с маской
 
Вложений: 3
Здравствуйте, подозреваю, что над моим вопросом тут все будут долго ржать, но все же)
Очень нужна помощь знающих людей.
Итак, есть прямоугольная шапка сайта, на которой изображены 3 объекта, шапка представляет собой один jpg-файл (рис.1)

При наведении мыши на один из этих трех объектов, должен показываться фрагмент из рис.2, т.е. перекрывать его, при этом соседствующие элементы остаются как есть.

В итоге есть два jpg-файла, и три области при наведении мыши к которым область одного рисунка должна заменяться другим файлом. Как сделать - не знаю, подскажите кто-нибудь.

TWETTI 26.09.2010 22:26

А вам обязательно на AS2 надо сделать? Или можно на AS3?

x2com 26.09.2010 22:28

TWETTI, на самом деле не принципиально, можно и на AS3

samana 26.09.2010 23:30

А почему нужно это сделать именно с двумя .jpg? Ведь можно шапку разбить на три части - три кнопки, и менять их вид при наведении.

TWETTI 26.09.2010 23:36

Вложений: 1
Вот так?

x2com 27.09.2010 00:27

TWETTI, да, то, что нужно) Счастье-то какое!

Добавлено через 2 минуты
samana, полагаете, что так проще? Смысл такого разбиения в чем? Пример с квадратами и кругами я дал для наглядности, чтоб меня правильно поняли. На самом деле там сложные графические объекты, резать это на куски на мой взгляд бессмысленно. Однако, спасибо за совет.

Добавлено через 26 минут
TWETTI, кодом поделитесь?

TWETTI 27.09.2010 00:57

Я код написал только для кружочков и квадратиков. Его не получится использовать с другими картинками. Я просто разрезал картинку с кружочками.

x2com 27.09.2010 01:02

TWETTI, а. Не самый удобный вариант, но жизнеспособный, могу и порезать свое) Поделитесь пожалуйста, а от завтра это уже "жить должно" в сети)

TWETTI 27.09.2010 01:18

Код AS3:

package 
{
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.Loader;
        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.geom.Point;
        import flash.geom.Rectangle;
        import flash.net.URLRequest;
 
        public class Main extends Sprite
        {
                private var currentImage:int;
                private var loader:Loader;
                private var image_normal:Bitmap;
                private var image_over:Bitmap;
 
                private var Circle1:Bitmap = new Bitmap(new BitmapData(200, 400, true, 0xFFFFFFFF));
                private var Circle2:Bitmap = new Bitmap(new BitmapData(200, 400, true, 0xFFFFFFFF));
                private var Circle3:Bitmap = new Bitmap(new BitmapData(200, 400, true, 0xFFFFFFFF));
 
                public function Main():void
                {
                        loadImages();
                }
 
                private function loadImages():void
                {
                        loader = new Loader();
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoad);
                        currentImage = 1;
                        loader.load(new URLRequest("1.gif"));
                }
 
                private function onLoad(e:Event):void
                {
                        if (currentImage == 1)
                        {
                                image_normal = e.target.content as Bitmap;
                                currentImage = 2;
                                loader.load(new URLRequest("2.gif"));
                        }
                        else if (currentImage == 2)
                        {
                                image_over = e.target.content as Bitmap;
 
                                addChild(image_normal);
 
                                Circle1.bitmapData.copyPixels(image_over.bitmapData, new Rectangle(0, 0, 200, 400), new Point(0, 0));
                                Circle2.bitmapData.copyPixels(image_over.bitmapData, new Rectangle(200, 0, 200, 400), new Point(0, 0));
                                Circle3.bitmapData.copyPixels(image_over.bitmapData, new Rectangle(400, 0, 200, 400), new Point(0, 0));
 
                                Circle1.x = 0;
                                Circle2.x = 200;
                                Circle3.x = 400;
 
                                Circle1.visible = false;
                                Circle2.visible = false;
                                Circle3.visible = false;
 
                                addChild(Circle1);
                                addChild(Circle2);
                                addChild(Circle3);
 
                                loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onLoad);
                                loader = null;
 
                                stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
                        }
 
                }
 
                private function onMouseMove(e:MouseEvent):void
                {
                        if (image_normal.bitmapData.getPixel(mouseX, mouseY) == 10552365)
                        {
                                Circle1.visible = true;
                        }
                        else if (image_normal.bitmapData.getPixel(mouseX, mouseY) == 10704030)
                        {
                                Circle2.visible = true;
                        }
                        else if (image_normal.bitmapData.getPixel(mouseX, mouseY) == 35237)
                        {
                                Circle3.visible = true;
                        }
                        else
                        {
                                Circle1.visible = false;
                                Circle2.visible = false;
                                Circle3.visible = false;
                        }
 
                }
 
        }
 
}


x2com 27.09.2010 01:31

TWETTI, спасибо, но мне капец) Я в жизни в этом не разберусь... Можно fla? Хоть потыкаю, попробую...

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


Часовой пояс GMT +4, время: 01:26.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.