![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 84
|
Почему вот так вот линия рисуется:
(хоть lineStyle и задаётся однажды) public function constr ():void
{
graphics.moveTo (x0+amp, y0);
graphics.lineStyle (2, color, 1);
i.addEventListener (Event.ENTER_FRAME,ii);
addChild (i);
}
public function ii (evt:Event):void
{
with (evt.currentTarget)
{
this.graphics.lineTo (x_coord, y_coord);
public function constr ():void
{
graphics.moveTo (x0+amp, y0);
i.addEventListener (Event.ENTER_FRAME,ii);
addChild (i);
}
public function ii (evt:Event):void
{
with (evt.currentTarget)
{
graphics.lineStyle (2, color, 1);
graphics.lineTo (x_coord, y_coord);
(this не присутствует в коде) |
|
|||||
|
Banned
Регистрация: Dec 2007
Сообщений: 9
|
потому что область видимости неправильная...
есстественно, что не к evt.currentTarget |
|
|||||
|
Banned
Регистрация: Dec 2007
Сообщений: 9
|
о чем я и говорил:
package com.dimpiax{
// *** IMPORT
import flash.display.Sprite;
import flash.events.Event;
// *** CLASS
public class Draw extends Sprite {
// *** CONSTRUCTOR
public function Draw () {
var s:Sprite = new Sprite();
s.graphics.moveTo (0, 0);
s.graphics.lineStyle (2);
s.addEventListener (Event.ENTER_FRAME,ii);
addChild (s);
}
// *** METHODS
public function ii (evt:Event):void {
with (evt.currentTarget) {
graphics.lineTo (10, 10);
}
}
}
}
package com.dimpiax{
// *** IMPORT
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
// *** CLASS
public class Draw extends Sprite {
// *** CONSTRUCTOR
public function Draw () {
var s:Sprite = new Sprite();
s.graphics.moveTo (0, 0);
s.graphics.lineStyle (1);
s.addEventListener (MouseEvent.MOUSE_MOVE, generate);
s.addEventListener (Event.ENTER_FRAME, drawLines);
addChild (s);
}
// *** METHODS
private function generate (evt:Event):void {
var ran:Number = Math.floor(Math.random()*0xFFFFFF);
with (evt.currentTarget) {
graphics.lineStyle (1, ran);
}
}
private function drawLines (evt:Event):void {
var ranX:Number = Math.random()*2;
var ranY:Number = Math.random()*4;
with (evt.currentTarget) {
graphics.lineTo (mouseX/ranX, mouseY/ranY);
}
}
}
}
![]() Последний раз редактировалось dimpiax; 07.12.2007 в 15:48. |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 84
|
Огромное спасибо. Благодаря Вашему совету разобрался и переписал код, убрав всё лишнее:
(например, убрал создание внутреннего спрайта i, т.к. это совершенно лишнее, ведь сам класс у нас спрайт и addChild делается в вызывающем классе) Просто песня! Никаких лишних this. И не нужен внутренний спрайт! Всё работает. |
|
|||||
|
стервочка (я мужик)
|
мдя ... нужно не избавляться от this, а писать его везде где можно
![]() |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
this обязателен всегда и везде. И точка.
|
|
|||||
|
Регистрация: Nov 2007
Сообщений: 84
|
Цитата:
Кстати, там, где this помечен красным, его тоже нужно ставить? Просто так и хочется написать this.evt.currentTarget.graphics.lineTo. Это не строчка, а ужас, конечно, но у меня пока всё не укладывается в голове. |
|
|||||
|
стервочка (я мужик)
|
не нужно использовать with, он только сбивает с толку и портит читабельность.
а вместо этого можно сделать так: Последний раз редактировалось etc; 08.12.2007 в 01:50. |
|
|||||
|
Регистрация: Nov 2007
Сообщений: 84
|
Цитата:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 20:47. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|