Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.04.2013, 14:08
zzSpirit вне форума Посмотреть профиль Отправить личное сообщение для zzSpirit Найти все сообщения от zzSpirit
  № 1  
Ответить с цитированием
zzSpirit
 
Аватар для zzSpirit

Регистрация: Jan 2013
Адрес: Москва, Сходня
Сообщений: 41
По умолчанию подключение не работает, если переменная называется vk, а не VK

Бился очень долго над этой проблемой... Измучился, ошибку нашел. Но непонятно почему так происходит.

Вот рабочий код, замените flashVars на свои данные и протестируйте. код ниже работает и выведет список друзей в output-панели. Но! Если заменить переменную VK на vk - то код сразу не работает и выдает ошибку:
Код:
1180: Call to a possibly undefined method api.
Код AS3:
package{
	import vk.APIConnection;
	import flash.display.*;
 
	public class Main extends MovieClip{
 
		public function Main():void
		{
			var flashVars:Object = stage.loaderInfo.parameters as Object;
 
			flashVars['api_id'] = 3548968;
			flashVars['viewer_id'] = 206137835;
			flashVars['sid'] = "760e0e9cda4c19eb9851b7419e550e728b083d3304a62c8e9d0dfd93dc6a39c09b28af6e373bfad92ce88";
			flashVars['secret'] = "2642da876c";
 
			var VK:APIConnection = new APIConnection(flashVars);
			VK.api('friends.get',{},vkGetFriends,vkError);
		}
 
		private function vkGetFriends(r:Object):void{}
		private function  vkError(r:Object):void{}
	}
}
Хотя если написать:
Код AS3:
var vk:String = 'ya cheburashka';
trace(vk);
то переменная работает.

Старый 12.04.2013, 18:53
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 2  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
имя переменной совпадает с названием пакета vk:
import vk.APIConnection;
а у пакета такого метода как api, само-собой, нету
Советую использовать префиксы для переменных: v/l для локальных, F для полей классов, A для аргументов функций, так меньше путаницы подобной будет.

Старый 12.04.2013, 18:58
Hauts вне форума Посмотреть профиль Отправить личное сообщение для Hauts Посетить домашнюю страницу Hauts Найти все сообщения от Hauts
  № 3  
Ответить с цитированием
Hauts
 
Аватар для Hauts

блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
Отправить сообщение для Hauts с помощью ICQ Отправить сообщение для Hauts с помощью Skype™
C4Grey, ничего себе у вас советы.
__________________
hauts.ru

Старый 12.04.2013, 22:07
zzSpirit вне форума Посмотреть профиль Отправить личное сообщение для zzSpirit Найти все сообщения от zzSpirit
  № 4  
Ответить с цитированием
zzSpirit
 
Аватар для zzSpirit

Регистрация: Jan 2013
Адрес: Москва, Сходня
Сообщений: 41
Цитата:
Сообщение от C4Grey Посмотреть сообщение
имя переменной совпадает с названием пакета vk:
import vk.APIConnection;
а у пакета такого метода как api, само-собой, нету
Советую использовать префиксы для переменных: v/l для локальных, F для полей классов, A для аргументов функций, так меньше путаницы подобной будет.
Ааа, теперь понял. Что-то я не думал что имя пакета как-то с переменной может конфликтовать. Вообще считал что пакеты тока в import импортируются и просто так вызываться не могут.

Не очень хочется кучу префиксов использовать, буду использовать только _ перед переменными, поскольку часто конфликт с такими переменными, как name, speed и подобными возникает.

Спасибо.

Добавлено через 3 минуты
Но всетаки не понятно, почему
Код AS3:
var vk:String = 'ya cheburashka';
trace(vk);
не вызывает конфликт, а
Код AS3:
var vk:APIConnection = new APIConnection(flashVars);
vk.api('friends.get',{},vkGetFriends,vkError);
вызывает?

Темболее, это локальная переменная в функции(конструкторе)
Методы в переменных как имя пакета нельзя использовать, а сами переменные можно? путаница какая-то...

Добавлено через 8 часов 0 минут
Нет, я всетаки ничего не пойму. Сейчас все снова написал, теперь работает с переменной vk все ок. Возможно потому, что пакет vk в корне, а все остальные файлы в пакете src?

Добавлено через 8 часов 7 минут
Ага, из-за этого... Написал в главном классе import vk.APIConnection; и выдало ту же ошибку. (код подключения к VK в другом классе-синглтоне)
Вопрос решен.

Старый 13.04.2013, 12:43
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Советую использовать префиксы для переменных: v/l для локальных, F для полей классов, A для аргументов функций, так меньше путаницы подобной будет.
Ужас. Не надо таких советов давать. Есть конвенции, и лучше следовать им

Старый 13.04.2013, 18:33
C4Grey вне форума Посмотреть профиль Отправить личное сообщение для C4Grey Найти все сообщения от C4Grey
  № 6  
Ответить с цитированием
C4Grey

Регистрация: May 2007
Сообщений: 181
Отправить сообщение для C4Grey с помощью ICQ Отправить сообщение для C4Grey с помощью Skype™
Забыл добавить "например". Не только на AS пишу, и работаю часто с одними испанцами, у них этот Delphi-стиль корпоративное достояние . Ну и привык, мне теперь конструкции вида
Код AS3:
private var _name:String;
глаз режут...Мне-то главное чтобы можно было отличить где аргумент, где локальная переменная, и где поле класса, а такой подход вполне оправдан, если для себя пишу. Ну а топикстартеру советую тогда это:
http://www.flasher.ru/forum/blog.php?bt=1872, или это: http://romaniac.ru/flex-sdk-coding-conventions ...Что-то они местами отличаются, но то такое
А вообще...процитирую одну книжку:
"-Трейсер — тот же паркурист, — отмахнулся Тема. — Просто кому-то захотелось назвать паркуристов трейсерами — «прокладывающими пути». Уж не знаю, откуда взялось это слово, но до появления одноименной паркур-команды ни о чем подобном никто не слышал. Зато теперь любой шкет скажет, что паркуристами себя называют только неудачники.
-Ну это обычное дело. Людям только дай повод наехать на других."
Алекс Кош, "Игры масок".


Последний раз редактировалось C4Grey; 13.04.2013 в 19:38.
Создать новую тему Ответ Часовой пояс GMT +4, время: 14:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:41.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.