![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Доброго времени суток.
Решил скролл сделать - наткнулся на проблему: MouseEvent-ы привязываются к конкретному объекту. Подскажите пожалуйста - как отследить MOUSE_UP в любой точке ролика и выход за его(ролика) пределы.
__________________
А я Томат. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Подписаться у stage.
|
|
|||||
|
Регистрация: Oct 2007
Сообщений: 53
|
Вероятно нужно назначить слушателей для stage. А по e.target определять по кому нажали мышкой.
Насчёт выхода за границы Event.MOUSE_LEAVE //опередили =)
__________________
Новичок |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 114
|
Цитата:
Подскажите пожалуйста, а как вы скролл делаете. У меня тоже такая проблема стоит... Объясните хотя бы логику... Понятно что надо scrollRect использовать... но дальше простого слайдинга вверх вниз у меня дело не пошло...А я бы хотел чтобы типа подвел к определенному месту ролика ролик пошел вверх, пошел к другому ролик- пошел вниз (если есть куда идти). |
|
|||||
|
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Спасибо за ответы - почти так и сделал..)))
Цитата:
http://www.flasher.ru/forum/showthread.php?t=98574
__________________
А я Томат. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 114
|
Цитата:
но вот блин, не хотелось бы опять в AS2 разбираться... |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 114
|
http://www.sephiroth.it/tutorials/flashPHP/scrollRect/
взял код переделал в AS 3... подправил под свои нужды... private function _onEnterFrame(evt:Event):void
{
mouse.x = this.mouseX;
mouse.y = this.mouseY;
if(r_mask.containsPoint(mouse))
{
y_pos = ((Math.abs(cont.y - mouse.y)/rect.height)*(r_img.height-rect.height));
//x_pos = ((Math.abs(cont.x - mouse.x)/rect.width)*(r_img.width-rect.width));
}
//rect.x += (x_pos - rect.x)/8;
//rect.x = rect.x;
//rect.y += (y_pos - rect.y)/8;
//rect.x = x_pos
rect.y = y_pos;
cont.scrollRect = rect;
если включаю эфекты (rect.y += (y_pos - rect.y)/8) флешка начинает вести себя не стабильно... Последний раз редактировалось vvk80; 02.11.2007 в 19:21. |
|
|||||
|
Регистрация: May 2007
Адрес: Moscow
Сообщений: 263
|
Нет времени - пишу навскидку несколько кусков кода:
/***target - прокручиваемый спрайт/мувик/текстфилд - у target есть маска, которая скрывает все лишнее.***/
private var target:DisplayObject;
target.addEventListener(MouseEvent.MOUSE_OVER, mouseON);
target.addEventListener(MouseEvent.MOUSE_OUT, mouseOFF);
private function mouseON(e:MouseEvent):void{
target.addEventListener(Event.ENTER_FRAME, targetScroll);
}
private function targetScroll(e:Event):void{
/*** здесь попробуй юзать соотношения "target.mouseX" с "target.mask.mouseX"
и "target.mouseY" c "target.mask.mouseY", для определения координат target под маской.***/
target.x=...
target.y=..
}
private function mouseOFF(e:MouseEvent):void{
target.removeEventListener(Event.ENTER_FRAME);
}
доделай до конца - получишь универсальный класс-скроллер.
__________________
А я Томат. Последний раз редактировалось Torero; 02.11.2007 в 19:05. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 114
|
мой класс:
package
{
import flash.display.*;
import flash.geom.*;
import flash.events.*;
import flash.utils.*;
import HelperClasses.Objects.*;
public class Test extends Sprite
{
//private var shape:Shape = new Shape();
private var cont:Sprite = new Sprite();
private var rect:Rectangle= new Rectangle(0,0,300,560);
private var mouse:Point = new Point(0,0)
private var r_img:Rectangle;
private var r_mask:Rectangle;
private var x_pos:Number
private var y_pos:Number
private var img:BaseClass; //my Swf/Img loader
private var _heightC:Number;
public function Test():void
{
//shape.graphics.beginFill(0xFFFF00,1);
//shape.graphics.drawRect(300,200,300,300);
//shape.graphics.endFill();
img = new BaseClass(cont,"LeftPane_overview.swf");
img.initImg(0,0);
img.addEventListener(BaseClass.LOAD_COMPLETE, _onLoadComplete);
cont.addEventListener(MouseEvent.ROLL_OVER, _onRollOver);
cont.addEventListener(MouseEvent.ROLL_OUT, _onRollOut);
this.addChild(cont);
cont.x=18;
cont.y=140;
this.addEventListener("fullyLoaded",full);//listening to the global full event for loaded swf
//dispathed by the loaded swf when it is fully loaded (all inner components are loaded
// used to obtain actual dimensions of the loaded swf
// event declared as public in the loaded swf
}
private function full(evt:Event):void
{
trace("Full")
trace(img.getHeight);
r_img = new Rectangle(0, 0, img.getWidth, img.getHeight) //getting rectnagle object containing the original width and height of the loaded image
r_mask = new Rectangle(cont.x, cont.y, rect.width, rect.height)
start();
}
private function start():void
{
cont.scrollRect = rect;
cont.addEventListener(Event.ENTER_FRAME,_onEnterFrame);
}
private function _onEnterFrame(evt:Event):void
{
mouse.x = this.mouseX;
mouse.y = this.mouseY;
if(r_mask.containsPoint(mouse))
{
y_pos = ((Math.abs(cont.y - mouse.y)/rect.height)*(r_img.height-rect.height));
//x_pos = ((Math.abs(cont.x - mouse.x)/rect.width)*(r_img.width-rect.width));
}
//rect.x += (x_pos - rect.x)/8;
//rect.x = rect.x;
//rect.y += (y_pos - rect.y)/8;
//rect.x = x_pos
rect.y = y_pos;
cont.scrollRect = rect;
}
private function _onLoadComplete(evt:Event):void
{
trace("loadComplete");
}
private function _onRollOver(evt:Event):void
{
}
private function _onRollOut(evt:Event):void
{
}
}
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 09:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|