![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Mar 2008
Сообщений: 88
|
помогите разобраться пожалуйста.
мне надо сделать следующее. сделана покадрово анимация прокрутки монеты. наводим на область монеты - появляется курсор(драг) со стрелочками "влево" "вправо". далее я думаю очевидно. кто встречался с подобным типом работы скажите, как сделать это просто, чтоб не запутаться. и какие проблемы могут возникнуть и как их обойти или решить. я просто пока даже не знаю с чего начать. сделала пока монету в нужных ракурсах. *проблемы которые могут возникнуть как мне кажется и решение которых я не знаю: -отслеживание курсора влево вправо - ясно. привязать смещение координат курсора по _y в режиме зажима кнопки мыши к покадровой анимации монеты -нужная технология "драг" в данном случае(или тут вообще не "драг"?) очень надеюсь на понимание и Ваш опыт PS если не ясно о чем речь, скажите Последний раз редактировалось priroda; 15.03.2008 в 01:30. |
|
|||||
|
Modus ponens
|
Я бы для начала смещал по _х... это горизонталь, _у это вертикаль.
Ну а в целом StartDrag лучше не использовать. onEnterFrame\mouseMove уже если что.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 88
|
мне нужени _x, вы правы)
пока спасибо на этом хочу спросить кое-что ещё. я всегда делаю как сейчас говорят всё "на заплатках". и данную проблему думаю смогла бы решить своим способом. хотелось бы посмотреть как выглядит это в оптимальном варианте. запустить это: при наводе на кнопку//область мувика Последний раз редактировалось priroda; 15.03.2008 в 12:04. |
|
|||||
|
Modus ponens
|
import mx.utils.Delegate;
//
var coin_mc:MovieClip = coin;
coin_mc.onPress = Delegate.create(this, startRotateCoin);
coin_mc.onRelease = Delegate.create(this, stopRotateCoin);
coin_mc.onReleaseOutside = Delegate.create(this, stopRotateCoin);
function startRotateCoin():Void {
if(coin_mc._xmouse>=0){
coin_mc.play();
} else {
reversePlay(coin_mc)
}
}
function stopRotateCoin():Void {
coin_mc.stop();
delete coin_mc.onEnterFrame;
}
function reversePlay(mc:MovieClip):Void {
mc.onEnterFrame = function():Void {
if(!(mc._currentframe-1)){
mc.gotoAndStop(mc._totalframes);
} else {
mc.prevFrame();
}
}
}
stopRotateCoin();
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 88
|
о, да)
смотрите как получается. монетка двигается в ту или иную сторону.т.е когда мы нажимаем слева от нее или справа. да?) да) но когда перетягиваем курсор допустим вправо, в то врема как нажали сначала на левую ёё сторону - движение всё равно продолжает считываться от клика слева - т.е. влево. а ведь мы уже перетянули курсор вправо) вот оно как получается мне кажется что этот код нужно каким то образом постоянно обновлять. что то вроде эффекта от >onClipEvent(EnterFrame)< может тогда "перетягивание" мыши будет считываться не только в момент нажатия но и в процессе "перетягивания" из стороны в сторону? вот только немного не понятно каким образом это всё "провернуть". --- только сейчас поняла что этот способ - не то. точнее создается совершенно другой эффект. да то что вы мне посоветовали еще пригодится) но к сожалению хотелось бы добиться эффекта который я попыталась описать ранее. немного поясню. если мы смещаем мышь(зажав кнопку её) от ценра на сантиметр(влево/вправо), то покадровая анимация продвигается относительно общего числа кадров в ней, пропорционально нашему сантиметру) wvxvw вы потрудились, спасибо. PS iNils, может Вы поможете?) пожалуйста*************** (* - пожалуйста/в день) Пояснение:Я хочу добиться эффекта - знаете как в играх про машины) т.е. авто в гараже можно прокрутить влево и вправо зажав кнопку мыши. вот как Последний раз редактировалось priroda; 31.03.2008 в 19:50. |
|
|||||
|
тоже интересно, как такое "провернуть"
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Это похоже?
var max:Number = monet_mc._totalframes;
//////////////////////
monet_mc.onRollOver = function(){
//Mouse.hide();
}
monet_mc.onPress = function(){
start3D(this._xmouse, this._currentframe);
}
monet_mc.onRollOut = function(){
//Mouse.show();
}
monet_mc.onRelease = monet_mc.onReleaseOutside = function(){
monet_mc.onMouseMove = null;
}
/////////////////////////
function start3D(startX:Number, startFrame:Number){
monet_mc.onMouseMove = function(){
var cf:Number = Math.round(startFrame - startX + this._xmouse);
//trace(cf);
if(cf > max){
cf = 1+cf-max;
this.gotoAndStop(cf);
startX = this._xmouse;
startFrame = cf;
} else if (cf < 1){
cf = max+cf;
this.gotoAndStop(cf);
startX = this._xmouse;
startFrame = cf;
} else this.gotoAndStop(cf);
}
}
__________________
Reality.getBounds(this); |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|