JXBigReelVc.m 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487
  1. //
  2. // JXBigReelVc.m
  3. // shiku_im
  4. //
  5. // Created by 123 on 2020/5/25.
  6. // Copyright © 2020 Reese. All rights reserved.
  7. //
  8. #import "JXBigReelVc.h"
  9. #import "LuckyDrawView.h"
  10. #import "UIView+LK.h"
  11. #import "UIViewExt.h"
  12. #import "UIView+Frame.h"
  13. #import "UUMarqueeView.h"
  14. #import "packageRoolModel.h"
  15. #import "JXWheelView.h"
  16. #import "LNNumberScrollAnimatedView.h"
  17. #import <AVFoundation/AVFoundation.h>
  18. #import "JXRelayVC.h"
  19. #import "JXBigReelView.h"
  20. #import "JXALLShowView.h"
  21. @interface JXBigReelVc ()<UUMarqueeViewDelegate,LuckyDrawViewDelegate,AVAudioPlayerDelegate>
  22. @property (nonatomic,strong) NSMutableArray *dataArr;
  23. @property (nonatomic,strong) UUMarqueeView * upwardMultiMarqueeView;
  24. @property (nonatomic,weak) UILabel *cjNums;
  25. @property (nonatomic,strong) UIImageView *bgImageView;
  26. @property (nonatomic,strong) NSMutableArray *jpDataArr;
  27. @property (nonatomic,weak) LNNumberScrollAnimatedView *socreTensDigitAnimation;
  28. @property (nonatomic ,strong) LNNumberScrollAnimatedView *socreDigitAnimation;
  29. @property (nonatomic ,strong) LNNumberScrollAnimatedView *socreAnimation;
  30. @property (nonatomic, strong) NSMutableArray *playerArr;
  31. @property (nonatomic, strong) AVAudioPlayer *numberPlayer;
  32. @property (nonatomic,strong) UIButton *righTopIMG;
  33. @property (nonatomic,strong) UIButton *righBtpIMG;
  34. @property (nonatomic,strong) UIButton *topBombImageView1;
  35. @property (nonatomic,strong) UIButton *topBombImageView2;
  36. @end
  37. @implementation JXBigReelVc
  38. -(void)viewWillAppear:(BOOL)animated
  39. {
  40. if (_upwardMultiMarqueeView) {
  41. [_upwardMultiMarqueeView start];
  42. }
  43. [self loadData];
  44. [g_notify addObserver:self selector:@selector(tongyong) name:@"tongyong" object:nil];
  45. }
  46. - (void)gobackBt{
  47. [g_navigation dismissViewController:self animated:YES];
  48. }
  49. - (void)viewDidLoad {
  50. [super viewDidLoad];
  51. _dataArr=[NSMutableArray array];
  52. _jpDataArr=[NSMutableArray array];
  53. [self defineNavBarXXX:@"幸运老虎机" andRinghtBtnImg:@"zhuanpan"];
  54. _dictMoney=[NSDictionary dictionary];
  55. UIScrollView *imageScrollView =[[UIScrollView alloc]init];
  56. imageScrollView.userInteractionEnabled=YES;
  57. imageScrollView.backgroundColor=kRGBColor(134, 29, 19);
  58. [self.view addSubview:imageScrollView];
  59. [imageScrollView mas_makeConstraints:^(MASConstraintMaker *make) {
  60. make.top.mas_equalTo(JX_SCREEN_TOP);
  61. make.left.mas_equalTo(0);
  62. make.right.mas_equalTo(0);
  63. make.bottom.mas_equalTo(0);
  64. }];
  65. UIImageView *imageBackV=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"背景+装饰2"]];
  66. imageBackV.userInteractionEnabled=YES;
  67. imageBackV.contentMode=UIViewContentModeScaleAspectFill;
  68. [imageScrollView addSubview:imageBackV];
  69. CGFloat imageYW = CGImageGetWidth(imageBackV.image.CGImage);
  70. // iamgeView的H = imageView的宽 / (原始图片的宽 / 原始图片的高)---根据宽高比得出imageView的宽
  71. CGFloat imageH = JX_SCREEN_WIDTH / (imageYW / CGImageGetHeight(imageBackV.image.CGImage));
  72. imageBackV.frame = CGRectMake(0, 0, JX_SCREEN_WIDTH, imageH);
  73. UIImageView *luckWheelView = [[UIImageView alloc]initWithFrame:CGRectMake(0, JX_SCREEN_TOP-44,JX_SCREEN_WIDTH-0, JX_SCREEN_WIDTH-0)];
  74. luckWheelView.userInteractionEnabled=YES;
  75. luckWheelView.image=[UIImage imageNamed:@"mm_Lh"];
  76. [imageBackV addSubview:luckWheelView];
  77. //个位十位单独设置,可分别设定各自速度 //WithFrame:CGRectMake(100, 100, 152 , 172)
  78. LNNumberScrollAnimatedView *socreTensDigitAnimation = [[LNNumberScrollAnimatedView alloc] initWithFrame:CGRectMake((JX_SCREEN_WIDTH)/2-152/4, (JX_SCREEN_WIDTH)/2-172/4 , 152/2 , 172/2)];
  79. [luckWheelView addSubview:socreTensDigitAnimation];
  80. socreTensDigitAnimation.userInteractionEnabled=YES;
  81. socreTensDigitAnimation.density = 7;
  82. socreTensDigitAnimation.duration = 1.9;
  83. socreTensDigitAnimation.minLength = 1;
  84. [socreTensDigitAnimation setValue:@9];
  85. [socreTensDigitAnimation sizeToFit];
  86. socreTensDigitAnimation.isAscending = YES;
  87. socreTensDigitAnimation.durationOffset = 0.1;
  88. self.socreTensDigitAnimation = socreTensDigitAnimation;
  89. _righTopIMG=[[UIButton alloc]init];
  90. [_righTopIMG setImage:[UIImage imageNamed:@"拉杆"] forState:UIControlStateNormal];
  91. [imageBackV addSubview:_righTopIMG];
  92. [_righTopIMG mas_makeConstraints:^(MASConstraintMaker *make) {
  93. make.centerY.mas_equalTo(socreTensDigitAnimation.mas_centerY).mas_equalTo(-30);
  94. make.left.mas_equalTo(JX_SCREEN_WIDTH/2+113);
  95. make.width.mas_equalTo(60);
  96. }];
  97. [_righTopIMG addTarget:self action:@selector(rightBTClick:) forControlEvents:UIControlEventTouchUpInside];
  98. _righBtpIMG=[[UIButton alloc]init];
  99. [_righBtpIMG setImage:[UIImage imageNamed:@"拉杆下"] forState:UIControlStateNormal];
  100. [imageBackV addSubview:_righBtpIMG];
  101. _righBtpIMG.hidden=YES;
  102. [_righBtpIMG mas_makeConstraints:^(MASConstraintMaker *make) {
  103. make.centerY.mas_equalTo(socreTensDigitAnimation.mas_centerY).mas_equalTo(40);
  104. //make.right.mas_equalTo(-20);
  105. make.left.mas_equalTo(JX_SCREEN_WIDTH/2+113);
  106. make.width.mas_equalTo(60);
  107. }];
  108. _topBombImageView1=[[UIButton alloc]init];
  109. [_topBombImageView1 setImage:[UIImage imageNamed:@"shou"] forState:UIControlStateNormal];
  110. [imageBackV addSubview:_topBombImageView1];
  111. [_topBombImageView1 mas_makeConstraints:^(MASConstraintMaker *make) {
  112. make.top.mas_equalTo(20);
  113. make.right.mas_equalTo(-20);
  114. }];
  115. //CGAffineTransform transForm=_topBombImageView1.transform;
  116. [self ImageSpring];
  117. //抽奖次数
  118. UILabel *cjNums =[[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(luckWheelView.frame)+40, JX_SCREEN_WIDTH, 12)];
  119. cjNums.text=[NSString stringWithFormat:@"今日剩余抽奖次数:%@",@"0次"];
  120. cjNums.textColor=[UIColor whiteColor];
  121. cjNums.textAlignment=NSTextAlignmentCenter;
  122. cjNums.font=[UIFont systemFontOfSize:20 weight:UIFontWeightMedium];
  123. [imageBackV addSubview:cjNums];
  124. self.cjNums=cjNums;
  125. //抽奖次数
  126. UIImageView *centerZJIMG=[[UIImageView alloc]init];
  127. centerZJIMG.image=[UIImage imageNamed:@"中奖装饰"];
  128. [imageBackV addSubview:centerZJIMG];
  129. [centerZJIMG mas_makeConstraints:^(MASConstraintMaker *make) {
  130. make.top.mas_equalTo(CGRectGetMaxY(cjNums.frame)+70);
  131. make.centerX.mas_equalTo(imageBackV.mas_centerX);
  132. }];
  133. UILabel *zjOrderL =[[UILabel alloc]init];
  134. zjOrderL.text=[NSString stringWithFormat:@"中奖名单"];
  135. zjOrderL.textAlignment=NSTextAlignmentCenter;
  136. zjOrderL.font=[UIFont systemFontOfSize:13 weight:UIFontWeightMedium];
  137. zjOrderL.textColor=[UIColor whiteColor];
  138. [imageBackV addSubview:zjOrderL];
  139. [zjOrderL mas_makeConstraints:^(MASConstraintMaker *make) {
  140. make.centerY.mas_equalTo(centerZJIMG.mas_centerY);
  141. make.centerX.mas_equalTo(imageBackV.mas_centerX);
  142. }];
  143. // 滚动字幕
  144. UIImageView *zhongjiangKIMG=[[UIImageView alloc]initWithFrame:CGRectMake(20, CGRectGetMaxY(cjNums.frame)+100, JX_SCREEN_WIDTH-40, 200)];
  145. zhongjiangKIMG.contentMode=UIViewContentModeScaleToFill;
  146. zhongjiangKIMG.image=[UIImage imageNamed:@"wheelYellow"];
  147. [imageBackV addSubview:zhongjiangKIMG];
  148. _upwardMultiMarqueeView = [[UUMarqueeView alloc]initWithFrame:CGRectMake(0, 15, JX_SCREEN_WIDTH-50, 200-30)];
  149. //_upwardMultiMarqueeView.backgroundColor=[UIColor colorWithWhite:0.0 alpha:0.2];
  150. _upwardMultiMarqueeView.delegate = self;
  151. _upwardMultiMarqueeView.timeIntervalPerScroll = 1.0f;
  152. _upwardMultiMarqueeView.timeDurationPerScroll = 0.5f;
  153. _upwardMultiMarqueeView.touchEnabled = YES;
  154. //_upwardMultiMarqueeView.useDynamicHeight=YES;
  155. //_upwardMultiMarqueeView.itemSpacing=3;
  156. _upwardMultiMarqueeView.layer.cornerRadius=5;
  157. _upwardMultiMarqueeView.layer.masksToBounds=YES;
  158. _upwardMultiMarqueeView.userInteractionEnabled=NO;
  159. [zhongjiangKIMG addSubview:_upwardMultiMarqueeView];
  160. [_upwardMultiMarqueeView reloadData];
  161. //_upwardMultiMarqueeView.frame=zhongjiangKIMG.bounds;
  162. imageScrollView.contentSize=CGSizeMake(0, CGRectGetMaxY(zhongjiangKIMG.frame)+50);
  163. [g_notify addObserver:self selector:@selector(comeBack) name:@"comeBackxxx" object:nil];
  164. }
  165. // 分享以后返回来的弹框
  166. - (void)tongyong{
  167. JXALLShowView *show=[[JXALLShowView alloc]init];
  168. show.backgroundColor=[UIColor colorWithWhite:0.0 alpha:0.2];
  169. show.frame=[UIScreen mainScreen].bounds;
  170. show.nameStr=@" 恭喜您,您已经成功领取奖金,请前往账户中心查看余额,如果长时间未到账请联系在线客服! ";
  171. [[UIApplication sharedApplication].keyWindow addSubview:show];
  172. }
  173. - (void)comeBack{
  174. JXMessageObject *msg=[[JXMessageObject alloc] init];
  175. msg.type = [NSNumber numberWithInt:kWCMessageTypeText];
  176. // msg.toUserId =@"9100";
  177. msg.shareType=@"9100";
  178. msg.fromUserId =MY_USER_ID;
  179. msg.fromUserName = g_server.myself.userNickname;
  180. msg.content = [NSString stringWithFormat:@"\n\n恭喜您 获得了%@等奖 %@元,礼金将自动派发到您的会员账户里,如长时间未收到请及时联系客服进行咨询===jixin%@", _dictMoney[@"rewardCode"],_dictMoney[@"money"],@"JXBigRellVc"];
  181. msg.timeSend = [NSDate date];
  182. JXRelayVC * relay = [[JXRelayVC alloc] init];
  183. NSMutableArray *array = [NSMutableArray arrayWithObject:msg];
  184. relay.relayMsgArray = array;
  185. relay.isUrl = NO;
  186. relay.yunMoney=@"40";
  187. relay.shareType=@"9100";
  188. relay.pushType = @"messageContent";
  189. [g_navigation pushViewController:relay animated:YES];
  190. }
  191. - (void)ImageSpring {
  192. [UIView animateWithDuration:0.5 animations:^{
  193. _topBombImageView1.transform=CGAffineTransformMake(1, 0, 0, 1, 0, 62);
  194. }];
  195. [UIView animateWithDuration:0.8 delay:1.0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
  196. _topBombImageView1.transform=CGAffineTransformMake(1, 0, 0, 1, 0, 0);
  197. } completion:^(BOOL finished) {
  198. [self ImageSpring];
  199. }];
  200. }
  201. - (void)rightBTClick:(UIButton *)sender{
  202. if (_numberStr<=0) {
  203. UIAlertView *alertShow=[[UIAlertView alloc]initWithTitle:nil message:[NSString stringWithFormat:@"%@",@"抽奖次数已用完!"] delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
  204. [alertShow show];
  205. return;
  206. }
  207. sender.hidden=YES;
  208. _righBtpIMG.hidden=NO;
  209. for (int i = 0; i<19; i++) {
  210. [self performSelector:@selector(playSound) withObject:nil afterDelay:0.1];
  211. }
  212. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  213. sender.hidden=NO;
  214. _righBtpIMG.hidden=YES;
  215. });
  216. long time = (long)[[NSDate date] timeIntervalSince1970];
  217. time = (time *1000 + g_server.timeDifference);
  218. NSString *salt = [NSString stringWithFormat:@"%ld", time];
  219. [g_server getUseract_turntableDo:salt andToView:self];
  220. [g_server getUserturntableSurplusCountl:salt andToView:self];
  221. }
  222. #pragma mark - 播放音效
  223. - (void)playSound
  224. {
  225. NSURL *url = [[NSBundle mainBundle] URLForResource:@"number.wav" withExtension:nil];
  226. SystemSoundID soundID = 0;
  227. AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url)
  228. , &soundID);
  229. AudioServicesPlayAlertSound (soundID);
  230. }
  231. /**记载数据*/
  232. -(void)loadData{
  233. [SVProgressHUD show];
  234. long time = (long)[[NSDate date] timeIntervalSince1970];
  235. time = (time *1000 + g_server.timeDifference);
  236. NSString *salt = [NSString stringWithFormat:@"%ld", time];
  237. //获取转盘抽奖用户剩余抽奖次
  238. [g_server getUserturntableSurplusCountl:salt andToView:self];
  239. //[g_server getUseract_act_getTurntable:salt andToView:self];
  240. //获取 转盘最近10条抽奖记录
  241. [g_server getUseact_firstNearTurntableHistory:salt andToView:self];
  242. }
  243. /**
  244. * 滚动字幕代理
  245. */
  246. - (NSUInteger)numberOfVisibleItemsForMarqueeView:(UUMarqueeView*)marqueeView {
  247. return 6;//_dataArr.count;
  248. }
  249. - (NSUInteger)numberOfDataForMarqueeView:(UUMarqueeView*)marqueeView {
  250. return _dataArr ? _dataArr.count : 0;
  251. }
  252. - (void)createItemView:(UIView*)itemView forMarqueeView:(UUMarqueeView*)marqueeView {
  253. // for upwardMultiMarqueeView
  254. //WithFrame:CGRectMake(15, 5.0f,(JX_SCREEN_WIDTH-30)/2 , 16.0f)
  255. UILabel *content = [[UILabel alloc] init];
  256. content.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular];
  257. content.textColor=[UIColor whiteColor];
  258. content.tag = 1001;
  259. [itemView addSubview:content];
  260. [content mas_makeConstraints:^(MASConstraintMaker *make) {
  261. make.top.mas_equalTo(5);
  262. make.left.mas_equalTo(30);
  263. }];
  264. UILabel *priceL = [[UILabel alloc] init];
  265. priceL.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular];
  266. priceL.textAlignment=NSTextAlignmentRight;
  267. priceL.textColor=[UIColor whiteColor];
  268. priceL.tag = 1002;
  269. [itemView addSubview:priceL];
  270. [priceL mas_makeConstraints:^(MASConstraintMaker *make) {
  271. make.top.mas_equalTo(5);
  272. make.right.mas_equalTo(-10);
  273. }];
  274. }
  275. - (void)updateItemView:(UIView*)itemView atIndex:(NSUInteger)index forMarqueeView:(UUMarqueeView*)marqueeView {
  276. packageRoolModel *model=_dataArr[index];
  277. UILabel *content = [itemView viewWithTag:1001];
  278. NSMutableAttributedString *hintString2=[[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"恭喜即信用户%@获得 %@",model.userName,model.money]];
  279. NSRange range2=[[hintString2 string]rangeOfString:model.money];
  280. [hintString2 addAttribute:NSForegroundColorAttributeName value:[UIColor yellowColor] range:range2];
  281. content.attributedText=hintString2;
  282. UILabel *time = [itemView viewWithTag:1002];
  283. NSString *stringTime=[self getTimeFromTimestamp:model.gmtCreate];
  284. time.text = [NSString stringWithFormat:@"%@",stringTime];
  285. }
  286. #pragma mark ---- 将时间戳转换成时间
  287. - (NSString *)getTimeFromTimestamp:(NSString *)timeL{
  288. //将对象类型的时间转换为NSDate类型
  289. NSDate * myDate=[NSDate dateWithTimeIntervalSince1970:[timeL doubleValue]/1000];
  290. //设置时间格式
  291. NSDateFormatter * formatter=[[NSDateFormatter alloc]init];
  292. [formatter setDateFormat:@"YYYY-MM-dd"];
  293. //将时间转换为字符串
  294. NSString *timeStr=[formatter stringFromDate:myDate];
  295. return timeStr;
  296. }
  297. /**
  298. * 返回数据结果
  299. */
  300. -(void) didServerResultSucces:(JXConnection*)aDownload dict:(NSDictionary*)dict array:(NSArray*)array1{
  301. [SVProgressHUD dismiss];
  302. if([aDownload.action isEqualToString:act_getTurntable])//获取展示奖品
  303. {
  304. _jpDataArr=[awarJpModel mj_objectArrayWithKeyValuesArray:array1];
  305. }
  306. if([aDownload.action isEqualToString:act_turntableDo])//卷盘抽奖
  307. {
  308. NSString *rewardCode=dict[@"rewardCode"];
  309. [self.socreTensDigitAnimation setValue:[NSNumber numberWithInt:[rewardCode intValue]]];
  310. [self.socreTensDigitAnimation startAnimation];
  311. [self.socreAnimation startAnimation];
  312. _dictMoney=dict;
  313. JXBigReelView *show=[[JXBigReelView alloc]init];
  314. show.backgroundColor=[UIColor colorWithWhite:0.0 alpha:0.7];
  315. show.frame=[UIScreen mainScreen].bounds;
  316. show.strURL=dict;
  317. [[UIApplication sharedApplication].keyWindow addSubview:show];
  318. } if([aDownload.action isEqualToString:act_turntableSurplusCountl])//获取转盘抽奖用户剩余抽奖次
  319. {
  320. _cjNums.text=[NSString stringWithFormat:@"今日剩余抽奖次数:%@次",dict[@"surplusCount"]];
  321. _numberStr=[dict[@"surplusCount"] intValue];
  322. } if([aDownload.action isEqualToString:act_firstNearTurntableHistory])
  323. {
  324. dispatch_async(dispatch_get_main_queue(), ^{
  325. _dataArr=[packageRoolModel mj_objectArrayWithKeyValuesArray:array1];
  326. [_upwardMultiMarqueeView reloadData];
  327. });
  328. }
  329. }
  330. -(int) didServerResultFailed:(JXConnection*)aDownload dict:(NSDictionary*)dict{
  331. [SVProgressHUD dismiss];
  332. NSString * errorCode = [NSString stringWithFormat:@"%@",[dict objectForKey:@"resultMsg"]];
  333. if([errorCode isEqualToString:@"权限验证失败"])
  334. {
  335. }
  336. if([aDownload.action isEqualToString:act_turntableSurplusCountl])//获取转盘抽奖用户剩余抽奖次
  337. {
  338. // UIAlertView *alertShow=[[UIAlertView alloc]initWithTitle:nil message:[NSString stringWithFormat:@"%@",@"今日抽奖次数已用完"] delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles:nil, nil];
  339. // [alertShow show];
  340. // _cjNums.text=[NSString stringWithFormat:@"今日剩余抽奖次数:%@次",dict[@"surplusCount"]];
  341. }
  342. return 1;
  343. }
  344. @end