![]() |
|
||||||||||
|
|||||
|
[+2 12.06.13]
Регистрация: May 2013
Сообщений: 12
|
Здравствуйте уважаемые гуру AS3
уже неделю бьюсь над вроде бы простой задачей. Имеется пользовательский класс Nit (с параметром h), которые создает линию(нить). В этом классе есть метод, который должен увеличивать или уменьшать размер нити по оси y. В главном классе два объекта класса Nit, и при нажатии на кнопку они должны плавно "растягиваться" или сужаться до определенного момента. Проблема в том, что длину нити код меняет, а перерисовывать объект с новыми координатами не перерисовыет. толку у меня не хватет. Класс: package atv{ import flash.geom.*; import flash.display.*; public class Nit extends Sprite{ public var nit:Sprite=new Sprite(); public var h:int; public var hh:int; public function Nit(h){ nit.graphics.lineStyle(2,0x000000); nit.graphics.moveTo(x,y); nit.graphics.lineTo(x,h); addChild(nit); } public function uv(){ hh+=15; } public function unUv(){ hh-=15; } public function Sd(k:Boolean){ if (k==true){ uv(); nit.graphics.lineTo(x,hh); }else{ unUv(); nit.graphics.lineTo(x,hh); } } } } Последний раз редактировалось iNils; 23.05.2013 в 02:53. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Nastia_22, для оформления своего кода надо использовать теги [as3][/as3]
__________________
Reality.getBounds(this); |
|
|||||
|
Banned
[+1 27.05.13]
Регистрация: May 2013
Сообщений: 60
|
Nastia_22, непонятно, что должно происходить с твоей нитью после клика. Нить должна длину менять? Может, вот так надо?
package { import flash.display.DisplayObjectContainer; import flash.display.Sprite; public class Rope extends Sprite { private var _rope_length:Number; public function Rope( container:DisplayObjectContainer, rope_length:Number, pos_x:Number = 0, pos_y:Number = 0 ) { container.addChild( this ); this.x = pos_x; this.y = pos_y; _rope_length = rope_length; DrawRope( 0 ); } public function DrawRope( cut:Number ):void { _rope_length += cut; this.graphics.clear(); this.graphics.lineStyle( 2, 0x000000 ); this.graphics.moveTo( this.x, this.y ); this.graphics.lineTo( this.x, this.y + _rope_length ); } public function get rope_length():Number { return _rope_length; } } } package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.events.TimerEvent; import flash.utils.Timer; public class Main extends Sprite { private var rope_1:Rope; private var rope_2:Rope; private var btn:Sprite; public function Main():void { if ( stage ) init(); else addEventListener( Event.ADDED_TO_STAGE , init ); } private function init( e:Event = null ):void { removeEventListener( Event.ADDED_TO_STAGE , init ); btn = new Sprite(); btn.graphics.beginFill( 0x000000 ); btn.graphics.drawRect( 0, 0, 70, 20 ); this.addChild( btn ); rope_1 = new Rope( this, 200, 100, 20 ); rope_2 = new Rope( this, 200, 200, 20 ); btn.addEventListener( MouseEvent.CLICK, Click ); } private function Click( e:MouseEvent ):void { btn.visible = false; var timer:Timer = new Timer( 25, 400 ); timer.addEventListener( TimerEvent.TIMER, RedrawRopes ); timer.addEventListener( TimerEvent.TIMER_COMPLETE, RedrawRopesStop ); timer.start(); } private function RedrawRopes( e:TimerEvent ):void { var timer:Timer = e.target as Timer; rope_1.DrawRope( Math.sin( timer.currentCount / 50 ) ); rope_2.DrawRope( Math.cos( timer.currentCount / 50 ) ); trace( "длина первой нити: ", rope_1.rope_length, " | длина второй нити: ", rope_2.rope_length ); } private function RedrawRopesStop( e:TimerEvent ):void { e.target.removeEventListener( TimerEvent.TIMER, RedrawRopes ); e.target.removeEventListener( TimerEvent.TIMER_COMPLETE, RedrawRopesStop ); btn.visible = true; } } } |
|
|||||
|
[+2 12.06.13]
Регистрация: May 2013
Сообщений: 12
|
да нить должна длину менять, щас посмотрим, спасибо
Добавлено через 28 минут мне нужно чтобы при одном нажатии на кнопку таймером менялось значение до определенного момента, а потом останавливалось. а здесь пока что при одном щелчке прибавление одного значения к длине, а мне надо чтобы в цикле как бы это было Добавлено через 1 час 31 минуту Спасибо! длина изменяется, а вот чтобы при нажатии кнопки вернуть в исходное состояние - тоже не получается. |
|
|||||
|
Banned
[+1 27.05.13]
Регистрация: May 2013
Сообщений: 60
|
Ну, подумай логически. Есть веревка. У нее есть свойство rope_length, которое возвращает длину. И есть метод, который отрезает кусок. Значит, чтобы установить длину веревки, например, в 100, нужно написать
Либо допиши класс, чтобы он умел восстанавливать длину. |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:17. |
|
|
« Предыдущая тема | Следующая тема » |
|
|