![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2013
Сообщений: 7
|
AS3 не изучал, но появилась необходимость создать приложение. Столкнулся с проблемой: не могу достать переменную kft_zamkn5 из функции. Необходимо её после сделать глобальной, а я даже вытащить её не могу. Кто знает, помогите.
Вот код: public class fishka5 extends MovieClip { protected var originalPosition:Point; public function fishka5() { originalPosition = new Point (x,y); buttonMode = true; addEventListener ( MouseEvent.MOUSE_DOWN, down ); } protected function down( event:MouseEvent ):void { parent.addChild( this ); startDrag(); stage.addEventListener( MouseEvent.MOUSE_UP, stageUp ); } protected function stageUp( event:MouseEvent ):void { stage.removeEventListener( MouseEvent.MOUSE_UP, stageUp ); stopDrag(); if ( dropTarget ) { var slot = dropTarget.parent.name; if ( slot == "e1" ){ kft_zamkn5 = -1; } else if ( slot == "d1" ){ kft_zamkn5 = 0; } buttonMode = false; removeEventListener ( MouseEvent.MOUSE_DOWN, down ); } else { returnToOriginalPosition(); } } protected function returnToOriginalPosition():void { x = originalPosition.x; y = originalPosition.y; } } } |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
У Вас она даже не объявлена как переменная. По идее этот код вообще не должен компилиться.
А чтобы "вытащить", объявите ее не локально а как члена класса (как Вы поступили с originalPosition).
__________________
Reality.getBounds(this); |
|
|||||
|
Нельзя достать переменную из функций. Это нарушает принцип инкапсуляции. Функция может вернуть результат своих вычислений.
Если для расчётов в функций, вам нужно внешнее значение, поступите так как вам посоветовали выше - объявите переменную свойством экземпляра или статическим свойством класса.
__________________
Дети не должны знать о своих родителях |
|
|||||
|
Так вы сможете использовать переменную в любом месте класса или в классе, наследующем данный класс:
public class fishka5 extends MovieClip { protected var originalPosition:Point; protected var kft_zamkn5:Number; //or integer if your variable is always an int public function fishka5() { originalPosition = new Point (x,y); buttonMode = true; addEventListener ( MouseEvent.MOUSE_DOWN, down ); } protected function down( event:MouseEvent ):void { parent.addChild( this ); startDrag(); stage.addEventListener( MouseEvent.MOUSE_UP, stageUp ); } protected function stageUp( event:MouseEvent ):void { stage.removeEventListener( MouseEvent.MOUSE_UP, stageUp ); stopDrag(); if ( dropTarget ) { var slot = dropTarget.parent.name; if ( slot == "e1" ){ kft_zamkn5 = -1; } else if ( slot == "d1" ){ kft_zamkn5 = 0; } buttonMode = false; removeEventListener ( MouseEvent.MOUSE_DOWN, down ); } else { returnToOriginalPosition(); } } protected function returnToOriginalPosition():void { x = originalPosition.x; y = originalPosition.y; } } } А так в любом месте программы: public class fishka5 extends MovieClip { protected var originalPosition:Point; public var kft_zamkn5:Number; //or integer, if your variable is always an int. public function fishka5() { originalPosition = new Point (x,y); buttonMode = true; addEventListener ( MouseEvent.MOUSE_DOWN, down ); } protected function down( event:MouseEvent ):void { parent.addChild( this ); startDrag(); stage.addEventListener( MouseEvent.MOUSE_UP, stageUp ); } protected function stageUp( event:MouseEvent ):void { stage.removeEventListener( MouseEvent.MOUSE_UP, stageUp ); stopDrag(); if ( dropTarget ) { var slot = dropTarget.parent.name; if ( slot == "e1" ){ kft_zamkn5 = -1; } else if ( slot == "d1" ){ kft_zamkn5 = 0; } buttonMode = false; removeEventListener ( MouseEvent.MOUSE_DOWN, down ); } else { returnToOriginalPosition(); } } protected function returnToOriginalPosition():void { x = originalPosition.x; y = originalPosition.y; } } } Последний раз редактировалось ZackMercury; 12.08.2013 в 13:58. |
|
|||||
|
Регистрация: Aug 2013
Сообщений: 7
|
Всем спасибо, буду разбираться.
|
|
|||||
|
Регистрация: Aug 2013
Сообщений: 7
|
Наверное, я неправильно выразился. Мне не столько важна сама переменная, сколько её значение после выполнения данной функции.
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
|
|
|||||
|
Регистрация: Aug 2013
Сообщений: 7
|
Спасибо, буду разбираться.
|
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Цитата:
var a:int = 0;//создали переменную со значением ноль var b:int = sum(a);//создали переменную и присвоили ей в качестве значения //результат сложения, который возвратит метод sum(num:int), самому методу //передаете в качестве аргумента переменную а. var b:int = sum(a); == var b:int = 5 trace(b);// 5 private function sum(num:int):int { var c:int = 5; return c + num;//возвращает значение сложения } |
|
|||||
|
Цитата:
В любом классе внутри приложения вы можете создать экземпляр вашего класса fishka5 Например: И затем обращаться к данной переменной (как к свойству объекта)
__________________
Мой профиль на фрилансе |
![]() |
![]() |
Часовой пояс GMT +4, время: 13:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|